summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorVivek Sekhar <vsekhar@codeaurora.org>2015-08-11 14:12:52 -0700
committerjrizzoli <joey@cyanogenmoditalia.it>2015-08-28 13:15:48 +0200
commitf7ce2fba35fe65e8d76b29b96b03aedc6093bc51 (patch)
tree9d498764454ea2c6efecfe873637c8e1395be506
parent370056110df018780d0ef2bd4b284ae5f93bc16a (diff)
downloadandroid_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_line0
-rw-r--r--res/raw/web_refiner_conf0
-rw-r--r--src/com/android/browser/CommandLineManager.java142
-rw-r--r--src/com/android/browser/EngineInitializer.java5
-rw-r--r--swe_res.gypi7
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/',