diff options
author | Vivek Sekhar <vsekhar@codeaurora.org> | 2015-08-11 14:12:52 -0700 |
---|---|---|
committer | jrizzoli <joey@cyanogenmoditalia.it> | 2015-08-28 13:15:48 +0200 |
commit | f7ce2fba35fe65e8d76b29b96b03aedc6093bc51 (patch) | |
tree | 9d498764454ea2c6efecfe873637c8e1395be506 | |
parent | 370056110df018780d0ef2bd4b284ae5f93bc16a (diff) | |
download | android_packages_apps_Gello-f7ce2fba35fe65e8d76b29b96b03aedc6093bc51.tar.gz android_packages_apps_Gello-f7ce2fba35fe65e8d76b29b96b03aedc6093bc51.tar.bz2 android_packages_apps_Gello-f7ce2fba35fe65e8d76b29b96b03aedc6093bc51.zip |
Move command line resources to browser
- Added dummy raw files for overlay
- Modified how command line switches are initialized
Change-Id: I3954624f416484f321bf50b0faf2692059a2d84d
-rw-r--r-- | res/raw/swe_command_line | 0 | ||||
-rw-r--r-- | res/raw/web_refiner_conf | 0 | ||||
-rw-r--r-- | src/com/android/browser/CommandLineManager.java | 142 | ||||
-rw-r--r-- | src/com/android/browser/EngineInitializer.java | 5 | ||||
-rw-r--r-- | swe_res.gypi | 7 |
5 files changed, 145 insertions, 9 deletions
diff --git a/res/raw/swe_command_line b/res/raw/swe_command_line new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/res/raw/swe_command_line diff --git a/res/raw/web_refiner_conf b/res/raw/web_refiner_conf new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/res/raw/web_refiner_conf diff --git a/src/com/android/browser/CommandLineManager.java b/src/com/android/browser/CommandLineManager.java new file mode 100644 index 00000000..3ee1238f --- /dev/null +++ b/src/com/android/browser/CommandLineManager.java @@ -0,0 +1,142 @@ +/* + * Copyright (c) 2014 The Linux Foundation. All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions are + * met: + * * Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * * Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the following + * disclaimer in the documentation and/or other materials provided + * with the distribution. + * * Neither the name of The Linux Foundation nor the names of its + * contributors may be used to endorse or promote products derived + * from this software without specific prior written permission. + * + * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESS OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT + * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS + * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR + * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF + * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR + * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, + * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE + * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN + * IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + * + */ + +package com.android.browser; + +import org.codeaurora.swe.utils.Logger; + +import android.content.Context; + +import java.io.BufferedReader; +import java.io.InputStreamReader; +import java.io.IOException; +import java.io.InputStream; +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileInputStream; + +public class CommandLineManager { + + private final static String LOGTAG = "CommandLineManager"; + public static final String COMMAND_LINE_FILE = "/data/local/tmp/swe-command-line"; + + // Read from the InputStream object + private static String parseCommandLine (InputStream is) { + BufferedReader br = null; + StringBuilder sb = new StringBuilder(); + String line; + try { + br = new BufferedReader(new InputStreamReader(is)); + while ((line = br.readLine()) != null) { + line = line.trim(); + + int commentIndex = line.indexOf('#'); + if (commentIndex > -1) { + // trim out the comments + line = line.substring(0,commentIndex); + } + + if (line.isEmpty()) + continue; + + // Consider only the uncommented lines + sb.append(line); + sb.append(" "); + } + + // Strip the browser name from the commandline options (First string) if options exists + if (sb.indexOf("--") >= 0) { + sb.delete(0, sb.indexOf(" ")); + } + } catch (IOException e) { + Logger.e(LOGTAG, "Exception:", e); + } finally { + try { + // close the streams and reader + is.close(); + if (br != null) + br.close(); + } catch (IOException e) { + Logger.e(LOGTAG, "Exception:", e); + } + } + return sb.toString(); + } + + // Set the browser options + private static char[] append(InputStream inStreamDefaultCmdLine, + InputStream inStreamUsrCmdLine) { + // bail out since there no file to command line to deal with + if (inStreamDefaultCmdLine == null && inStreamUsrCmdLine == null){ + return null; + } + + String userArgs = ""; + String defaultArgs = ""; + if (inStreamDefaultCmdLine != null) { + // Reading the default commandline file + // Refers to the internal filename residing in "raw" directory + defaultArgs = parseCommandLine(inStreamDefaultCmdLine); + } + + // Reading the user commandline file + if (inStreamUsrCmdLine != null) { + userArgs = parseCommandLine(inStreamUsrCmdLine); + } + + // Assumption: The user commandline file can be empty or it exists + // with atleast one commandline option. + // Insert the content of the default commandline file in the beginning of + // the user commandline file content. So that, the user settings will get + // the presidence + userArgs = "Browser "+defaultArgs+" "+userArgs; + + + Logger.v(LOGTAG, "(Command Line Arguments): " + userArgs); + + char[] buffer = userArgs.toString().toCharArray(); + return buffer; + } + + public static char[] getCommandLineSwitches(Context context) { + InputStream sweCmdLineStream = + context.getResources().openRawResource(R.raw.swe_command_line); + InputStream usrCmdLineStream = null; + File file = new File(COMMAND_LINE_FILE); + if(file.exists()){ + try { + usrCmdLineStream = new FileInputStream(COMMAND_LINE_FILE); + } catch (FileNotFoundException e) { + } + } + // Set the browser options here + return append(sweCmdLineStream, usrCmdLineStream); + } +} diff --git a/src/com/android/browser/EngineInitializer.java b/src/com/android/browser/EngineInitializer.java index b64f493e..1a1b0707 100644 --- a/src/com/android/browser/EngineInitializer.java +++ b/src/com/android/browser/EngineInitializer.java @@ -320,7 +320,7 @@ public class EngineInitializer { if (!mInitializationStarted) { mInitializationStarted = true; mUiThreadHandler = new Handler(Looper.getMainLooper()); - Engine.initializeCommandLine(ctx); + Engine.initializeCommandLine(ctx, CommandLineManager.getCommandLineSwitches(ctx)); mInitializeTask = new InitializeTask(ctx); mInitializeTask.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR); mActivitySchedulerMap = new HashMap<BrowserActivity, ActivityScheduler>(); @@ -356,8 +356,9 @@ public class EngineInitializer { assert runningOnUiThread() : "Tried to initialize the engine on the wrong thread."; if (!mInitializationCompleted) { + // TODO: Evaluate the benefit of async Engine.initialize() - Engine.initialize(ctx); + Engine.initialize(ctx, CommandLineManager.getCommandLineSwitches(ctx)); // Add the browser commandline options BrowserConfig.getInstance(ctx).initCommandLineSwitches(); diff --git a/swe_res.gypi b/swe_res.gypi index dd1ae7e9..6a9621ce 100644 --- a/swe_res.gypi +++ b/swe_res.gypi @@ -66,13 +66,6 @@ '<(PRODUCT_DIR)/res.java/content_strings_grd.zip', ], }, - #swe_res. - { - 'destination': '<(PRODUCT_DIR)/swe_android_browser_apk/swe_res/swe_res/', - 'files': [ - '<(PRODUCT_DIR)/res.java/swe_chrome_engine_java.zip', - ], - }, #chrome_res. { 'destination': '<(PRODUCT_DIR)/swe_android_browser_apk/swe_res/chrome_res/', |