Loading build/patches/Add-an-always-incognito-mode.patch +1 −21 Original line number Diff line number Diff line Loading @@ -18,12 +18,11 @@ Enable incognito custom tabs and fix crashes for incognito/custom tab intents (c .../browser/init/StartupTabPreloader.java | 11 ++- .../privacy/settings/PrivacySettings.java | 4 +- .../browser/tabmodel/ChromeTabCreator.java | 16 +++- .../tabmodel/TabModelSelectorBase.java | 8 ++ .../browser/tabmodel/TabPersistentStore.java | 10 +++ .../webapps/WebappIntentDataProvider.java | 14 ++++ .../flags/android/chrome_feature_list.cc | 2 +- .../strings/android_chrome_strings.grd | 7 ++ 16 files changed, 172 insertions(+), 10 deletions(-) 15 files changed, 164 insertions(+), 10 deletions(-) create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni Loading Loading @@ -360,25 +359,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome if (state.isIncognito() != mIncognito) { throw new IllegalStateException("Incognito state mismatch. TabState: " diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java @@ -256,7 +256,15 @@ public abstract class TabModelSelectorBase implements TabModelSelector, Incognit public void markTabStateInitialized() { if (mTabStateInitialized) return; mTabStateInitialized = true; + for (TabModelSelectorObserver listener : mObservers) listener.onTabStateInitialized(); + + if (mStartIncognito) { + // profile is not set in always-incognito mode in TabModelSelectorProfileSupplier + // so force it + selectModel(false); // restore model so next call always set incognito mode + selectModel(true); + } } @Override diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java Loading build/patches/User-agent-customization.patch +28 −16 Original line number Diff line number Diff line Loading @@ -38,7 +38,8 @@ to use the flag in the hamburger menu to navigate with a custom useragent leavin .../renderer_host/render_process_host_impl.cc | 1 + .../browser/web_contents/web_contents_impl.cc | 4 +- .../framehost/NavigationControllerImpl.java | 6 +- 31 files changed, 751 insertions(+), 13 deletions(-) content/renderer/render_thread_impl.cc | 1 - 32 files changed, 751 insertions(+), 14 deletions(-) create mode 100644 chrome/android/java/res/layout/custom_useragent_preferences.xml create mode 100644 chrome/android/java/res/xml/useragent_preferences.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/UserAgentPreferences.java Loading Loading @@ -253,7 +254,7 @@ new file mode 100644 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java @@ -69,6 +69,7 @@ import org.chromium.chrome.browser.app.appmenu.AppMenuPropertiesDelegateImpl; @@ -73,6 +73,7 @@ import org.chromium.chrome.browser.app.appmenu.AppMenuPropertiesDelegateImpl; import org.chromium.chrome.browser.app.flags.ChromeCachedFlags; import org.chromium.chrome.browser.app.tab_activity_glue.ReparentingDelegateFactory; import org.chromium.chrome.browser.app.tabmodel.AsyncTabParamsManagerSingleton; Loading @@ -261,7 +262,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import org.chromium.chrome.browser.bookmarks.BookmarkBridge; import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem; import org.chromium.chrome.browser.bookmarks.BookmarkModel; @@ -206,6 +207,13 @@ import org.chromium.ui.modaldialog.ModalDialogManager; @@ -213,6 +214,13 @@ import org.chromium.ui.modaldialog.ModalDialogManager; import org.chromium.ui.widget.Toast; import org.chromium.url.Origin; import org.chromium.webapk.lib.client.WebApkNavigationClient; Loading @@ -275,7 +276,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import org.chromium.url.GURL; @@ -2074,11 +2082,18 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent> @@ -2095,11 +2103,18 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent> } else if (id == R.id.view_source_id) { currentTab.getWebContents().getNavigationController().loadUrl(new LoadUrlParams("view-source:"+currentTab.getUrlString())); } else if (id == R.id.request_desktop_site_id || id == R.id.request_desktop_site_check_id) { Loading Loading @@ -796,10 +797,14 @@ diff --git a/chrome/browser/android/preferences/privacy_preferences_manager.cc b + bool overrideUserAgentEnabled = + g_browser_process->local_state()->GetBoolean(prefs::kOverrideUserAgentEnabled); + std::string ua = g_browser_process->local_state()->GetString(prefs::kOverrideUserAgent); + if (ua.empty()) { + ua = ChromeContentBrowserClient().GetUserAgent(); + } + + base::CommandLine* parsed_command_line = + base::CommandLine::ForCurrentProcess(); + parsed_command_line->RemoveSwitch(switches::kUserAgent); + if (!ua.empty()) { + if (overrideUserAgentEnabled) { + parsed_command_line->AppendSwitchASCII(switches::kUserAgent, ua); + } Loading @@ -807,11 +812,7 @@ diff --git a/chrome/browser/android/preferences/privacy_preferences_manager.cc b + for (auto iter = content::RenderProcessHost::AllHostsIterator(); !iter.IsAtEnd(); + iter.Advance()) { + if (iter.GetCurrentValue()->IsInitializedAndNotDead()) { + if (overrideUserAgentEnabled) { + iter.GetCurrentValue()->GetRendererInterface()->SetUserAgent(ua); + } else { + iter.GetCurrentValue()->GetRendererInterface()->SetUserAgent( + ChromeContentBrowserClient().GetUserAgent()); + } + } + } Loading Loading @@ -1080,7 +1081,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc --- a/chrome/common/pref_names.cc +++ b/chrome/common/pref_names.cc @@ -3124,4 +3124,17 @@ const char kIncognitoTabHistoryEnabled[] = @@ -3121,4 +3121,17 @@ const char kIncognitoTabHistoryEnabled[] = "incognito_tab_history_enabled"; #endif Loading @@ -1101,7 +1102,7 @@ diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h @@ -1097,6 +1097,14 @@ extern const char kSecurityTokenSessionNotificationSeconds[]; @@ -1096,6 +1096,14 @@ extern const char kSecurityTokenSessionNotificationSeconds[]; extern const char kIncognitoTabHistoryEnabled[]; #endif Loading Loading @@ -1228,6 +1229,17 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/frameh void clearHistory(long nativeNavigationControllerAndroid, NavigationControllerImpl caller); int getNavigationHistory(long nativeNavigationControllerAndroid, NavigationControllerImpl caller, Object history); diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc --- a/content/renderer/render_thread_impl.cc +++ b/content/renderer/render_thread_impl.cc @@ -1697,7 +1697,6 @@ void RenderThreadImpl::SetWebKitSharedTimersSuspended(bool suspend) { } void RenderThreadImpl::SetUserAgent(const std::string& user_agent) { - DCHECK(user_agent_.IsNull()); user_agent_ = WebString::FromUTF8(user_agent); GetContentClient()->renderer()->DidSetUserAgent(user_agent); } -- 2.17.1 Loading
build/patches/Add-an-always-incognito-mode.patch +1 −21 Original line number Diff line number Diff line Loading @@ -18,12 +18,11 @@ Enable incognito custom tabs and fix crashes for incognito/custom tab intents (c .../browser/init/StartupTabPreloader.java | 11 ++- .../privacy/settings/PrivacySettings.java | 4 +- .../browser/tabmodel/ChromeTabCreator.java | 16 +++- .../tabmodel/TabModelSelectorBase.java | 8 ++ .../browser/tabmodel/TabPersistentStore.java | 10 +++ .../webapps/WebappIntentDataProvider.java | 14 ++++ .../flags/android/chrome_feature_list.cc | 2 +- .../strings/android_chrome_strings.grd | 7 ++ 16 files changed, 172 insertions(+), 10 deletions(-) 15 files changed, 164 insertions(+), 10 deletions(-) create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/AlwaysIncognitoLinkInterceptor.java diff --git a/chrome/android/chrome_java_sources.gni b/chrome/android/chrome_java_sources.gni Loading Loading @@ -360,25 +359,6 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/Chrome if (state.isIncognito() != mIncognito) { throw new IllegalStateException("Incognito state mismatch. TabState: " diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabModelSelectorBase.java @@ -256,7 +256,15 @@ public abstract class TabModelSelectorBase implements TabModelSelector, Incognit public void markTabStateInitialized() { if (mTabStateInitialized) return; mTabStateInitialized = true; + for (TabModelSelectorObserver listener : mObservers) listener.onTabStateInitialized(); + + if (mStartIncognito) { + // profile is not set in always-incognito mode in TabModelSelectorProfileSupplier + // so force it + selectModel(false); // restore model so next call always set incognito mode + selectModel(true); + } } @Override diff --git a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java --- a/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/tabmodel/TabPersistentStore.java Loading
build/patches/User-agent-customization.patch +28 −16 Original line number Diff line number Diff line Loading @@ -38,7 +38,8 @@ to use the flag in the hamburger menu to navigate with a custom useragent leavin .../renderer_host/render_process_host_impl.cc | 1 + .../browser/web_contents/web_contents_impl.cc | 4 +- .../framehost/NavigationControllerImpl.java | 6 +- 31 files changed, 751 insertions(+), 13 deletions(-) content/renderer/render_thread_impl.cc | 1 - 32 files changed, 751 insertions(+), 14 deletions(-) create mode 100644 chrome/android/java/res/layout/custom_useragent_preferences.xml create mode 100644 chrome/android/java/res/xml/useragent_preferences.xml create mode 100644 chrome/android/java/src/org/chromium/chrome/browser/settings/UserAgentPreferences.java Loading Loading @@ -253,7 +254,7 @@ new file mode 100644 diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java --- a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java +++ b/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActivity.java @@ -69,6 +69,7 @@ import org.chromium.chrome.browser.app.appmenu.AppMenuPropertiesDelegateImpl; @@ -73,6 +73,7 @@ import org.chromium.chrome.browser.app.appmenu.AppMenuPropertiesDelegateImpl; import org.chromium.chrome.browser.app.flags.ChromeCachedFlags; import org.chromium.chrome.browser.app.tab_activity_glue.ReparentingDelegateFactory; import org.chromium.chrome.browser.app.tabmodel.AsyncTabParamsManagerSingleton; Loading @@ -261,7 +262,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import org.chromium.chrome.browser.bookmarks.BookmarkBridge; import org.chromium.chrome.browser.bookmarks.BookmarkBridge.BookmarkItem; import org.chromium.chrome.browser.bookmarks.BookmarkModel; @@ -206,6 +207,13 @@ import org.chromium.ui.modaldialog.ModalDialogManager; @@ -213,6 +214,13 @@ import org.chromium.ui.modaldialog.ModalDialogManager; import org.chromium.ui.widget.Toast; import org.chromium.url.Origin; import org.chromium.webapk.lib.client.WebApkNavigationClient; Loading @@ -275,7 +276,7 @@ diff --git a/chrome/android/java/src/org/chromium/chrome/browser/app/ChromeActiv import org.chromium.url.GURL; @@ -2074,11 +2082,18 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent> @@ -2095,11 +2103,18 @@ public abstract class ChromeActivity<C extends ChromeActivityComponent> } else if (id == R.id.view_source_id) { currentTab.getWebContents().getNavigationController().loadUrl(new LoadUrlParams("view-source:"+currentTab.getUrlString())); } else if (id == R.id.request_desktop_site_id || id == R.id.request_desktop_site_check_id) { Loading Loading @@ -796,10 +797,14 @@ diff --git a/chrome/browser/android/preferences/privacy_preferences_manager.cc b + bool overrideUserAgentEnabled = + g_browser_process->local_state()->GetBoolean(prefs::kOverrideUserAgentEnabled); + std::string ua = g_browser_process->local_state()->GetString(prefs::kOverrideUserAgent); + if (ua.empty()) { + ua = ChromeContentBrowserClient().GetUserAgent(); + } + + base::CommandLine* parsed_command_line = + base::CommandLine::ForCurrentProcess(); + parsed_command_line->RemoveSwitch(switches::kUserAgent); + if (!ua.empty()) { + if (overrideUserAgentEnabled) { + parsed_command_line->AppendSwitchASCII(switches::kUserAgent, ua); + } Loading @@ -807,11 +812,7 @@ diff --git a/chrome/browser/android/preferences/privacy_preferences_manager.cc b + for (auto iter = content::RenderProcessHost::AllHostsIterator(); !iter.IsAtEnd(); + iter.Advance()) { + if (iter.GetCurrentValue()->IsInitializedAndNotDead()) { + if (overrideUserAgentEnabled) { + iter.GetCurrentValue()->GetRendererInterface()->SetUserAgent(ua); + } else { + iter.GetCurrentValue()->GetRendererInterface()->SetUserAgent( + ChromeContentBrowserClient().GetUserAgent()); + } + } + } Loading Loading @@ -1080,7 +1081,7 @@ diff --git a/chrome/browser/ui/android/strings/android_chrome_strings.grd b/chro diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc --- a/chrome/common/pref_names.cc +++ b/chrome/common/pref_names.cc @@ -3124,4 +3124,17 @@ const char kIncognitoTabHistoryEnabled[] = @@ -3121,4 +3121,17 @@ const char kIncognitoTabHistoryEnabled[] = "incognito_tab_history_enabled"; #endif Loading @@ -1101,7 +1102,7 @@ diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h @@ -1097,6 +1097,14 @@ extern const char kSecurityTokenSessionNotificationSeconds[]; @@ -1096,6 +1096,14 @@ extern const char kSecurityTokenSessionNotificationSeconds[]; extern const char kIncognitoTabHistoryEnabled[]; #endif Loading Loading @@ -1228,6 +1229,17 @@ diff --git a/content/public/android/java/src/org/chromium/content/browser/frameh void clearHistory(long nativeNavigationControllerAndroid, NavigationControllerImpl caller); int getNavigationHistory(long nativeNavigationControllerAndroid, NavigationControllerImpl caller, Object history); diff --git a/content/renderer/render_thread_impl.cc b/content/renderer/render_thread_impl.cc --- a/content/renderer/render_thread_impl.cc +++ b/content/renderer/render_thread_impl.cc @@ -1697,7 +1697,6 @@ void RenderThreadImpl::SetWebKitSharedTimersSuspended(bool suspend) { } void RenderThreadImpl::SetUserAgent(const std::string& user_agent) { - DCHECK(user_agent_.IsNull()); user_agent_ = WebString::FromUTF8(user_agent); GetContentClient()->renderer()->DidSetUserAgent(user_agent); } -- 2.17.1