M42 snap browser
Change-Id: If52741ad5e34241aa9f928244942a33a91610e58
diff --git a/src/com/android/browser/BaseUi.java b/src/com/android/browser/BaseUi.java
index da9ad63..4c17b8b 100644
--- a/src/com/android/browser/BaseUi.java
+++ b/src/com/android/browser/BaseUi.java
@@ -428,14 +428,9 @@
// container to the content view.
FrameLayout wrapper =
(FrameLayout) container.findViewById(R.id.webview_wrapper);
- ViewGroup parent = (ViewGroup) mainView.getParent();
- if (parent != wrapper) {
- if (parent != null) {
- parent.removeView(mainView);
- }
- wrapper.addView(mainView);
- }
- parent = (ViewGroup) container.getParent();
+ if (wrapper != mainView.getView().getParent())
+ wrapper.addView(mainView.getView());
+ ViewGroup parent = (ViewGroup) container.getParent();
if (parent != mContentView) {
if (parent != null) {
parent.removeView(container);
@@ -458,7 +453,7 @@
// needed by WebView.
FrameLayout wrapper =
(FrameLayout) container.findViewById(R.id.webview_wrapper);
- wrapper.removeView(mainView);
+ wrapper.removeView(mainView.getView());
mContentView.removeView(container);
mUiController.endActionMode();
mUiController.removeSubWindow(tab);
diff --git a/src/com/android/browser/Browser.java b/src/com/android/browser/Browser.java
index 4c1d9f2..bd2ac06 100644
--- a/src/com/android/browser/Browser.java
+++ b/src/com/android/browser/Browser.java
@@ -25,9 +25,12 @@
import android.util.Log;
import android.os.Process;
+import org.chromium.chrome.browser.ChromiumApplication;
+import org.chromium.chrome.browser.PKCS11AuthenticationManager;
+
import org.codeaurora.swe.Engine;
-public class Browser extends Application {
+public class Browser extends ChromiumApplication {
private final static String LOGTAG = "browser";
@@ -112,5 +115,28 @@
}
}
+
+ @Override
+ protected PKCS11AuthenticationManager getPKCS11AuthenticationManager() {
+ return null;
+ }
+
+ @Override
+ protected void openProtectedContentSettings() {
+ }
+
+ @Override
+ protected boolean areParentalControlsEnabled() {
+ return false;
+ }
+
+ @Override
+ public String getSettingsActivityName() {
+ return null;
+ }
+
+ @Override
+ public void initCommandLine() {
+ }
}
diff --git a/src/com/android/browser/BrowserActivity.java b/src/com/android/browser/BrowserActivity.java
index 670849b..220566a 100644
--- a/src/com/android/browser/BrowserActivity.java
+++ b/src/com/android/browser/BrowserActivity.java
@@ -37,7 +37,7 @@
import android.view.ViewTreeObserver;
import android.view.Window;
-import com.google.common.annotations.VisibleForTesting;
+import org.chromium.base.VisibleForTesting;
import com.android.browser.R;
import com.android.browser.search.DefaultSearchEngine;
import com.android.browser.search.SearchEngine;
diff --git a/src/com/android/browser/BrowserBookmarksPage.java b/src/com/android/browser/BrowserBookmarksPage.java
index 3fea1ed..ca6c0dc 100644
--- a/src/com/android/browser/BrowserBookmarksPage.java
+++ b/src/com/android/browser/BrowserBookmarksPage.java
@@ -62,7 +62,7 @@
import org.json.JSONException;
import org.json.JSONObject;
-import org.codeaurora.net.NetworkServices;
+//import org.codeaurora.net.NetworkServices;
interface BookmarksPageCallbacks {
// Return true if handled
@@ -435,7 +435,7 @@
lm.restartLoader(LOADER_ACCOUNTS, null, this);
//Notify about anticipated network activity
- NetworkServices.HintUpcomingUserActivity();
+ //NetworkServices.HintUpcomingUserActivity();
return mRoot;
}
diff --git a/src/com/android/browser/BrowserConfigBase.java b/src/com/android/browser/BrowserConfigBase.java
index a96e6ad..99b6456 100644
--- a/src/com/android/browser/BrowserConfigBase.java
+++ b/src/com/android/browser/BrowserConfigBase.java
@@ -43,6 +43,12 @@
abstract class BrowserConfigBase {
private static final String OVERRIDE_USER_AGENT = "user-agent";
+ private static final String OVERRIDE_MEDIA_DOWNLOAD = "media-download";
+ private static final String HTTP_HEADERS = "http-headers";
+ private static final String ENABLE_SWE = "enabled-swe";
+ private static final String ENABLE_TOP_CONTROLS = "enable-top-controls-position-calculation";
+ private static final String TOP_CONTROLS_HIDE_THRESHOLD = "top-controls-hide-threshold";
+ private static final String TOP_CONTROLS_SHOW_THRESHOLD = "top-controls-show-threshold";
private Context mContext;
public BrowserConfigBase(Context context) {
@@ -67,15 +73,31 @@
}
}
+ public void overrideMediaDownload() {
+ boolean defaultAllowMediaDownloadsValue = mContext.getResources().getBoolean(
+ R.bool.def_allow_media_downloads);
+ if (defaultAllowMediaDownloadsValue)
+ BrowserCommandLine.appendSwitchWithValue(OVERRIDE_MEDIA_DOWNLOAD, "1");
+ }
+
+ public void setExtraHTTPRequestHeaders() {
+ String headers = mContext.getResources().getString(
+ R.string.def_extra_http_headers);
+ if (!TextUtils.isEmpty(headers))
+ BrowserCommandLine.appendSwitchWithValue(HTTP_HEADERS, headers);
+ }
+
public void initCommandLineSwitches() {
//SWE-hide-title-bar - enable following flags
- BrowserCommandLine.appendSwitch("enable-top-controls-position-calculation");
- BrowserCommandLine.appendSwitchWithValue("top-controls-height", "52");
- BrowserCommandLine.appendSwitchWithValue("top-controls-show-threshold", "0.5");
- BrowserCommandLine.appendSwitchWithValue("top-controls-hide-threshold", "0.5");
+ BrowserCommandLine.appendSwitch(ENABLE_TOP_CONTROLS);
+ BrowserCommandLine.appendSwitchWithValue(TOP_CONTROLS_SHOW_THRESHOLD, "0.5");
+ BrowserCommandLine.appendSwitchWithValue(TOP_CONTROLS_HIDE_THRESHOLD, "0.5");
+ BrowserCommandLine.appendSwitch(ENABLE_SWE);
// Allow to override UserAgent
overrideUserAgent();
+ overrideMediaDownload();
+ setExtraHTTPRequestHeaders();
}
private String constructUserAgent(String userAgent) {
@@ -98,7 +120,6 @@
EXIT_DIALOG, /* Add 'Exit' menu item and show 'Minimize or quit' dialog */
TITLE_IN_URL_BAR, /* Display page title instead of url in URL bar */
CUSTOM_DOWNLOAD_PATH, /* Allow users to provide custom download path */
- ALLOW_MEDIA_DOWNLOADS, /* Add 'Allow media downloads' menu item */
DISABLE_HISTORY /* Allow disabling saving history for non-incognito tabs */
}
@@ -116,8 +137,6 @@
return mContext.getResources().getBoolean(R.bool.feature_title_in_URL_bar);
case CUSTOM_DOWNLOAD_PATH:
return mContext.getResources().getBoolean(R.bool.feature_custom_download_path);
- case ALLOW_MEDIA_DOWNLOADS:
- return mContext.getResources().getBoolean(R.bool.feature_allow_media_downloads);
case DISABLE_HISTORY:
return mContext.getResources().getBoolean(R.bool.feature_disable_history);
default:
diff --git a/src/com/android/browser/BrowserSettings.java b/src/com/android/browser/BrowserSettings.java
index 9ba3c31..5bb085c 100644
--- a/src/com/android/browser/BrowserSettings.java
+++ b/src/com/android/browser/BrowserSettings.java
@@ -258,8 +258,6 @@
settings.setUseWideViewPort(isWideViewport());
settings.setDoNotTrack(doNotTrack());
settings.setMediaPlaybackRequiresUserGesture(false);
- settings.setAllowMediaDownloads(allowMediaDownloads());
- setExtraHTTPRequestHeaders(settings);
WebSettings settingsClassic = (WebSettings) settings;
settingsClassic.setHardwareAccelSkiaEnabled(isSkiaHardwareAccelerated());
@@ -284,12 +282,6 @@
settingsClassic.setLinkPrefetchEnabled(mLinkPrefetchAllowed);
}
- private void setExtraHTTPRequestHeaders(WebSettings settings){
- String headers = mContext.getResources().getString(R.string.def_extra_http_headers);
- if (!TextUtils.isEmpty(headers)){
- settings.setHTTPRequestHeaders(headers);
- }
- }
/**
* Syncs all the settings that have no UI
@@ -343,6 +335,7 @@
private void syncSharedSettings() {
mNeedsSharedSync = false;
CookieManager.getInstance().setAcceptCookie(acceptCookies());
+
}
private void syncManagedSettings() {
@@ -731,25 +724,6 @@
return mPrefs.getBoolean(PREF_ENABLE_MEMORY_MONITOR, true);
}
- public boolean allowMediaDownloads() {
- // Return false if preference is not exposed to user
- if (!BrowserConfig.getInstance(mContext)
- .hasFeature(BrowserConfig.Feature.ALLOW_MEDIA_DOWNLOADS))
- return false;
-
- // Otherwise, look at default value
- boolean defaultAllowMediaDownloadsValue = mController.getContext()
- .getResources().getBoolean(R.bool.def_allow_media_downloads);
-
- // If preference is not saved, save default value
- if (!mPrefs.contains(PREF_ALLOW_MEDIA_DOWNLOADS)){
- Editor edit = mPrefs.edit();
- edit.putBoolean(PREF_ALLOW_MEDIA_DOWNLOADS, defaultAllowMediaDownloadsValue);
- edit.apply();
- }
-
- return mPrefs.getBoolean(PREF_ALLOW_MEDIA_DOWNLOADS, defaultAllowMediaDownloadsValue);
- }
public boolean loadPageInOverviewMode() {
return mPrefs.getBoolean(PREF_LOAD_PAGE, true);
diff --git a/src/com/android/browser/BrowserWebView.java b/src/com/android/browser/BrowserWebView.java
index 9215fe5..5255994 100644
--- a/src/com/android/browser/BrowserWebView.java
+++ b/src/com/android/browser/BrowserWebView.java
@@ -111,6 +111,8 @@
public void setTitleBar(TitleBar title) {
mTitleBar = title;
+ if (!mTitleBar.isFixed())
+ setTopControlsHeight(52);
}
// From TitleBarDelegate
diff --git a/src/com/android/browser/Controller.java b/src/com/android/browser/Controller.java
index dd3d76c..747b779 100644
--- a/src/com/android/browser/Controller.java
+++ b/src/com/android/browser/Controller.java
@@ -132,7 +132,7 @@
private static final String LOGTAG = "Controller";
private static final String SEND_APP_ID_EXTRA =
"android.speech.extras.SEND_APPLICATION_ID_EXTRA";
- private static final String INCOGNITO_URI = "browser:incognito";
+ private static final String INCOGNITO_URI = "chrome://incognito";
// Remind switch to data connection if wifi is unavailable
private static final int NETWORK_SWITCH_TYPE_OK = 1;
@@ -1406,6 +1406,7 @@
break;
}
getCurrentTopWebView().requestFocus();
+ getCurrentTopWebView().onActivityResult(requestCode, resultCode, intent);
}
/**
diff --git a/src/com/android/browser/EngineInitializer.java b/src/com/android/browser/EngineInitializer.java
index 6556abb..ef88458 100644
--- a/src/com/android/browser/EngineInitializer.java
+++ b/src/com/android/browser/EngineInitializer.java
@@ -45,7 +45,7 @@
import java.util.concurrent.CancellationException;
import java.util.concurrent.ExecutionException;
-import com.google.common.annotations.VisibleForTesting;
+import org.chromium.base.VisibleForTesting;
public class EngineInitializer {
private final static String LOGTAG = "EngineInitializer";
@@ -247,6 +247,66 @@
}
+ private void completeInitializationAsynOnUiThread(final Context ctx) {
+ assert runningOnUiThread() : "Tried to initialize the engine on the wrong thread.";
+
+ if (!mInitializationCompleted) {
+ // TODO: Evaluate the benefit of async Engine.initialize()
+ Engine.StartupCallback callback =
+ new Engine.StartupCallback() {
+ @Override
+ public void onSuccess(boolean alreadyStarted) {
+ if (Looper.myLooper() == Looper.getMainLooper()) {
+ Log.e(LOGTAG, "SWE engine initialization success");
+ // Add the browser commandline options
+ BrowserConfig.getInstance(ctx).initCommandLineSwitches();
+
+ //Note: Only enable this for debugging.
+ if (BrowserCommandLine.hasSwitch(STRICT_MODE)) {
+ Log.v(LOGTAG, "StrictMode enabled");
+ StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
+ .detectDiskReads()
+ .detectDiskWrites()
+ .detectNetwork()
+ .penaltyLog()
+ .build());
+ StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
+ .detectLeakedSqlLiteObjects()
+ .detectLeakedClosableObjects()
+ .penaltyLog()
+ .penaltyDeath()
+ .build());
+ }
+
+ //Enable remote debugging by default
+ Engine.setWebContentsDebuggingEnabled(true);
+ mInitializationCompleted = true;
+ mLibraryLoaded = true;
+ BrowserSettings.getInstance().onEngineInitializationComplete();
+
+ if (mActivity != null && mNotifyActivity) {
+ mNotifyActivity = false;
+ postOnUiThread(new Runnable() {
+ @Override
+ public void run() {
+ mActivity.onEngineInitializationComplete();
+ mActivityReady = true;
+ processPendingEvents();
+ }
+ });
+ }
+ }
+ }
+
+ @Override
+ public void onFailure() {
+ Log.e(LOGTAG, "SWE engine initialization failed");
+ }
+ };
+ Engine.initialize(ctx, callback);
+ }
+ }
+
private void processPendingEvents() {
assert runningOnUiThread() : "Tried to initialize the engine on the wrong thread.";
diff --git a/src/com/android/browser/PreferenceKeys.java b/src/com/android/browser/PreferenceKeys.java
index eb9fe53..f6b37f5 100644
--- a/src/com/android/browser/PreferenceKeys.java
+++ b/src/com/android/browser/PreferenceKeys.java
@@ -40,7 +40,6 @@
static final String PREF_DEFAULT_TEXT_ENCODING = "default_text_encoding";
static final String PREF_ENABLE_JAVASCRIPT = "enable_javascript";
static final String PREF_ENABLE_MEMORY_MONITOR = "enable_memory_monitor";
- static final String PREF_ALLOW_MEDIA_DOWNLOADS = "allow_media_downloads";
static final String PREF_LOAD_PAGE = "load_page";
static final String PREF_OPEN_IN_BACKGROUND = "open_in_background";
static final String PREF_RESET_DEFAULT_PREFERENCES = "reset_default_preferences";
diff --git a/src/com/android/browser/Tab.java b/src/com/android/browser/Tab.java
index c7b8ea7..0a23205 100644
--- a/src/com/android/browser/Tab.java
+++ b/src/com/android/browser/Tab.java
@@ -219,7 +219,7 @@
PageState(Context c, boolean incognito) {
mIncognito = incognito;
if (mIncognito) {
- mOriginalUrl = mUrl = "browser:incognito";
+ mOriginalUrl = mUrl = "chrome://incognito";
mTitle = c.getString(R.string.new_incognito_tab);
} else {
mOriginalUrl = mUrl = "";
@@ -670,7 +670,7 @@
public WebResourceResponse shouldInterceptRequest(WebView view,
String url) {
//intercept if opening a new incognito tab - show the incognito welcome page
- if (url.startsWith("browser:incognito")) {
+ if (url.startsWith("chrome://incognito")) {
Resources resourceHandle = mContext.getResources();
InputStream inStream = resourceHandle.openRawResource(
com.android.browser.R.raw.incognito_mode_start_page);
@@ -702,6 +702,24 @@
super.onUnhandledKeyEvent(view, event);
}
}
+ //SWE-download-file
+ @Override
+ public void onDownloadStart(String url,
+ String userAgent,
+ String contentDisposition,
+ String mimeType,
+ long contentLength) {
+ if (mDownloadListener != null) {
+ if (mDownloadListener instanceof BrowserDownloadListener) {
+ ((BrowserDownloadListener) mDownloadListener).onDownloadStart(url,
+ userAgent, contentDisposition, mimeType, contentLength);
+ } else {
+ mDownloadListener.onDownloadStart(url, userAgent,
+ contentDisposition, mimeType, contentLength);
+ }
+ }
+ }
+ //SWE-download-file
};
private void syncCurrentState(WebView view, String url) {
@@ -1578,7 +1596,7 @@
if (mMainView.hasCrashed()) {
// Reload if render process has crashed. This is done here so that
// setFocus call sends wasShown message to correct render process.
- mMainView.reload();
+ mMainView.setNeedsReload(true);
}
setupHwAcceleration(mMainView);
mMainView.onResume();
diff --git a/src/com/android/browser/UrlUtils.java b/src/com/android/browser/UrlUtils.java
index c327fdc..4d3dee4 100755
--- a/src/com/android/browser/UrlUtils.java
+++ b/src/com/android/browser/UrlUtils.java
@@ -47,7 +47,7 @@
static final Pattern ACCEPTED_URI_SCHEMA = Pattern.compile(
"(?i)" + // switch on case insensitive matching
"(" + // begin group for schema
- "(?:http|https|file):\\/\\/" +
+ "(?:http|https|file|chrome):\\/\\/" +
"|(?:inline|data|about|javascript):" +
")" +
"(.*)" );
diff --git a/src/com/android/browser/appmenu/AppMenuHandler.java b/src/com/android/browser/appmenu/AppMenuHandler.java
index 94a429a..dd1c1af 100644
--- a/src/com/android/browser/appmenu/AppMenuHandler.java
+++ b/src/com/android/browser/appmenu/AppMenuHandler.java
@@ -15,7 +15,7 @@
import android.view.View;
import android.widget.PopupMenu;
-import com.google.common.annotations.VisibleForTesting;
+import org.chromium.base.VisibleForTesting;
import java.util.ArrayList;
diff --git a/src/com/android/browser/preferences/AdvancedPreferencesFragment.java b/src/com/android/browser/preferences/AdvancedPreferencesFragment.java
index 5edf8e6..4c715ce 100644
--- a/src/com/android/browser/preferences/AdvancedPreferencesFragment.java
+++ b/src/com/android/browser/preferences/AdvancedPreferencesFragment.java
@@ -83,10 +83,6 @@
// Below are preferences for carrier specific features
PreferenceScreen contentSettingsPrefScreen =
(PreferenceScreen) mFragment.findPreference("content_settings");
- if (!BrowserConfig.getInstance(mFragment.getActivity().getApplicationContext())
- .hasFeature(BrowserConfig.Feature.ALLOW_MEDIA_DOWNLOADS))
- contentSettingsPrefScreen.removePreference(contentSettingsPrefScreen
- .findPreference(PreferenceKeys.PREF_ALLOW_MEDIA_DOWNLOADS));
if (!BrowserConfig.getInstance(mFragment.getActivity().getApplicationContext())
.hasFeature(BrowserConfig.Feature.CUSTOM_DOWNLOAD_PATH)) {
diff --git a/src/com/android/browser/preferences/WebsiteSettingsFragment.java b/src/com/android/browser/preferences/WebsiteSettingsFragment.java
index 9fe18c5..fb96645 100644
--- a/src/com/android/browser/preferences/WebsiteSettingsFragment.java
+++ b/src/com/android/browser/preferences/WebsiteSettingsFragment.java
@@ -278,6 +278,13 @@
askForGeolocation(sites);
}
});
+
+
+ //SWETODO: REMOVE code below be after WebStorage getOrigins Method is Functional
+ Map<String, Site> sites = new HashMap<String, Site>();
+ askForGeolocation(sites);
+
+
}
public void askForGeolocation(final Map<String, Site> sites) {
@@ -737,7 +744,7 @@
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
- View view = inflater.inflate(R.layout.website_settings, container, false);
+ View view = inflater.inflate(R.layout.swe_website_settings, container, false);
Bundle args = getArguments();
if (args != null) {
mSite = (Site) args.getParcelable(EXTRA_SITE);
diff --git a/src/com/android/browser/provider/BrowserProvider2.java b/src/com/android/browser/provider/BrowserProvider2.java
index 0a30853..58aa1a7 100644
--- a/src/com/android/browser/provider/BrowserProvider2.java
+++ b/src/com/android/browser/provider/BrowserProvider2.java
@@ -58,7 +58,7 @@
import com.android.browser.platformsupport.BrowserContract.SyncState;
import com.android.browser.platformsupport.SyncStateContentProviderHelper;
import com.android.browser.widget.BookmarkThumbnailWidgetProvider;
-import com.google.common.annotations.VisibleForTesting;
+import org.chromium.base.VisibleForTesting;
import java.io.ByteArrayOutputStream;
import java.io.File;