5ecd81154f
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
166 lines
4.8 KiB
Python
Executable File
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)
|