Jim Miller 5ecd81154f Move keyguard to its own process.
This is in preparation to moving keyguard into its own process.

Moved keyguard source and resources into new .apk.

Got basic test app working.  Still need to implement MockPatternUtils
and means to pass it into KeyguardService with local binder interface.

Added new ACCESS_KEYGUARD_SECURE_STORAGE permission.

Temporarily disabled USER_PRESENT broadcast.

Remove unintentional whitespace changes in PhoneWindowManager, etc.

Checkpoint basic working version.

Move to systemui process.

Synchronize with TOT.

Sync with recent user API changes.

Fix bug with returing interface instead of stub for IKeyguardResult.  Create KeyguardServiceDelegate to allow
for runtime-selectable local or remote interface.

More keyguard crash robustness.

Keyguard crash recovery working.  Currently fails safe (locked).

Fix selector view which was still using frameworks resources.

Remove more references to internal framework variables.  Use aliases for those we should move but
currently have dependencies.

Allow runtime switching between service and local mode.

Fix layout issue on tablets where orientation was reading the incorrect constant
from the framework.  Remove more framework dependencies.

Fix PIN keyboard input.

Remove unnecessary copy of orientation attrs.

Remove unused user selector widget and attempt to get multi user working again.

Fix multi-user avatar icon by grabbing it from UserManager rather than directly since
keyguard can no longer read it.

Merge with AppWidget userId changes in master.

Change-Id: I254d6fc6423ae40f6d7fef50aead4caa701e5ad2
2013-02-27 17:27:53 -08:00

166 lines
4.8 KiB
Python
Executable File

#!/usr/bin/env python
import os
import sys
import difflib
import filecmp
import tempfile
from optparse import OptionParser
from subprocess import call
from subprocess import Popen
from subprocess import PIPE
def which(program):
def executable(path):
return os.path.isfile(path) and os.access(path, os.X_OK)
path, file = os.path.split(program)
if path and executable(program):
return program
else:
for path in os.environ["PATH"].split(os.pathsep):
exe = os.path.join(path, program)
if executable(exe):
return exe
return ""
DIFF_TOOLS=["meld", "kdiff3", "xdiff", "diffmerge.sh", "diff"]
PROTO_SRC="./src/com/android/keyguard/"
PROTO_RES="./res/"
TEMP_FILE1="/tmp/tempFile1.txt"
TEMP_FILE2="/tmp/tempFile2.txt"
FW_SRC="../../../../frameworks/base/policy/src/com/android/internal/policy/impl/keyguard/"
FW_RES="../../../../frameworks/base/core/res/res/"
FW_PKG="com.android.internal.policy.impl.keyguard"
PROTO_PKG="com.android.keyguard"
FW_RES_IMPORT="import com.android.internal.R;"
# Find a differ
DIFF_TOOL=""
if ("DIFF_TOOL" in os.environ and len(os.environ["DIFF_TOOL"]) > 0):
DIFF_TOOL=which(os.environ["DIFF_TOOL"])
if len(DIFF_TOOL) == 0:
for differ in DIFF_TOOLS:
DIFF_TOOL=which(differ)
if len(DIFF_TOOL) > 0:
break
print "Using differ", DIFF_TOOL
#Anything file which contains any string in this list as a substring will be ommitted
IGNORE=["LockHotnessActivity.java", "unified_lock_activity.xml", "optionmenu.xml"]
WATCH=[]
def dirCompare(sourceDir, destDir, ext, run_in_reverse):
sourceFiles = getFileList(sourceDir, ext)
destFiles = getFileList(destDir, ext)
for file in sourceFiles:
print file
destFile = destDir + file
sourceFile = sourceDir + file
if (file in destFiles):
if run_in_reverse:
prepareFileForCompare(sourceFile, TEMP_FILE1, FW_RES_IMPORT, FW_PKG, PROTO_PKG)
prepareFileForCompare(destFile, TEMP_FILE2, FW_RES_IMPORT,)
else:
prepareFileForCompare(destFile, TEMP_FILE1, FW_RES_IMPORT, FW_PKG, PROTO_PKG)
prepareFileForCompare(sourceFile, TEMP_FILE2, FW_RES_IMPORT,)
if (filecmp.cmp(TEMP_FILE1, TEMP_FILE2)):
print "File %s is the same in proto and framework" %(file)
else:
print "Running diff for: %s" %(file)
diff(sourceFile, destFile)
else:
print "File %s does not exist in framework" %(file)
if not run_in_reverse:
diff(sourceFile, destFile)
def main(argv):
run_in_reverse = False
if len(argv) > 1:
if argv[1] == '--help' or argv[1] == '-h':
print ('Usage: %s [<commit>]' % argv[0])
print ('\tdiff to framework, ' +
'optionally restricting to files in <commit>')
sys.exit(0)
elif argv[1] == '--reverse':
print "Running in reverse"
run_in_reverse = True
else:
print ("**** Pulling file list from: %s" % argv[1])
pipe = Popen(['git', 'diff', '--name-only', argv[1]], stdout=PIPE).stdout
for line in iter(pipe.readline,''):
path = line.rstrip()
file = path[path.rfind('/') + 1:]
print '**** watching: %s' % file
WATCH.append(file);
pipe.close()
if run_in_reverse:
#dirCompare(FW_RES, PROTO_RES, ".xml", run_in_reverse)
print ("**** Source files:")
dirCompare(FW_SRC, PROTO_SRC, ".java", run_in_reverse)
else:
#dirCompare(PROTO_RES, FW_RES, ".xml", run_in_reverse)
print ("**** Source files:")
dirCompare(PROTO_SRC, FW_SRC, ".java", run_in_reverse)
if (os.path.exists(TEMP_FILE1)):
os.remove(TEMP_FILE1)
if (os.path.exists(TEMP_FILE2)):
os.remove(TEMP_FILE2)
def getFileList(rootdir, extension):
fileList = []
for root, subFolders, files in os.walk(rootdir):
for file in files:
f = os.path.join(root,file)
if (os.path.splitext(f)[1] == extension and (not inIgnore(f))):
fileList.append(f[len(rootdir):])
return fileList
def prepareFileForCompare(inFile, outFile, skip="", replace="", withText=""):
# Delete the outfile, so we're starting with a new file
if (os.path.exists(outFile)):
os.remove(outFile)
fin = open(inFile)
fout = open(outFile, "w")
for line in fin:
# Ignore any lines containing the ignore string ("import com.android.internal.R;) and
# ignore any lines containing only whitespace.
if (line.find(skip) < 0 and len(line.strip(' \t\n\r')) > 0):
# For comparison, for framework files, we replace the fw package with the
# proto package, since these aren't relevant.
if len(replace) > 0:
fout.write(line.replace(replace, withText))
else:
fout.write(line)
fin.close()
fout.close()
def diff(file1, file2):
call([DIFF_TOOL, file1, file2])
def inIgnore(file):
for ignore in IGNORE:
if file.find(ignore) >= 0:
return True
if len(WATCH) > 0:
for watch in WATCH:
if file.find(watch) >= 0:
return False
return True
return False
if __name__=="__main__":
main(sys.argv)