Commit 76dce13b authored by John Z Wu's avatar John Z Wu Committed by Commit Bot

Ensure //ios/web_view sign in state is cleared on start up.

In the combined CronetChromeWebView framework, Cronet may be started
first, resulting in ignored command line flags set in
web_view_global_state_util.mm.

Change-Id: I1b65558d9042d726f634a87ac5ea1e1bd8df0a9c
Reviewed-on: https://chromium-review.googlesource.com/c/1290193Reviewed-by: default avatarHiroshi Ichikawa <ichikawa@chromium.org>
Commit-Queue: John Wu <jzw@chromium.org>
Cr-Commit-Position: refs/heads/master@{#601000}
parent 3baab9c0
...@@ -11,6 +11,7 @@ ...@@ -11,6 +11,7 @@
#include "components/keyed_service/ios/browser_state_dependency_manager.h" #include "components/keyed_service/ios/browser_state_dependency_manager.h"
#include "components/pref_registry/pref_registry_syncable.h" #include "components/pref_registry/pref_registry_syncable.h"
#include "components/prefs/pref_registry_simple.h" #include "components/prefs/pref_registry_simple.h"
#include "components/prefs/pref_service.h"
#include "components/signin/core/browser/profile_management_switches.h" #include "components/signin/core/browser/profile_management_switches.h"
#include "components/signin/core/browser/signin_manager.h" #include "components/signin/core/browser/signin_manager.h"
#include "components/signin/core/browser/signin_pref_names.h" #include "components/signin/core/browser/signin_pref_names.h"
...@@ -69,6 +70,14 @@ WebViewSigninManagerFactory::BuildServiceInstanceFor( ...@@ -69,6 +70,14 @@ WebViewSigninManagerFactory::BuildServiceInstanceFor(
web::BrowserState* context) const { web::BrowserState* context) const {
WebViewBrowserState* browser_state = WebViewBrowserState* browser_state =
WebViewBrowserState::FromBrowserState(context); WebViewBrowserState::FromBrowserState(context);
// Clearing the sign in state on start up greatly simplifies the management of
// ChromeWebView's signin state.
PrefService* pref_service = browser_state->GetPrefs();
pref_service->ClearPref(prefs::kGoogleServicesAccountId);
pref_service->ClearPref(prefs::kGoogleServicesUsername);
pref_service->ClearPref(prefs::kGoogleServicesUserAccountId);
std::unique_ptr<SigninManager> service = std::make_unique<SigninManager>( std::unique_ptr<SigninManager> service = std::make_unique<SigninManager>(
WebViewSigninClientFactory::GetForBrowserState(browser_state), WebViewSigninClientFactory::GetForBrowserState(browser_state),
WebViewOAuth2TokenServiceFactory::GetForBrowserState(browser_state), WebViewOAuth2TokenServiceFactory::GetForBrowserState(browser_state),
......
...@@ -29,13 +29,6 @@ void InitializeGlobalState() { ...@@ -29,13 +29,6 @@ void InitializeGlobalState() {
web_main_delegate = web_main_delegate =
std::make_unique<ios_web_view::WebViewWebMainDelegate>(); std::make_unique<ios_web_view::WebViewWebMainDelegate>();
web::WebMainParams params(web_main_delegate.get()); web::WebMainParams params(web_main_delegate.get());
params.argc = 2;
const char* executable = "ios-web-view";
// This is used in SigninManagerBase to clear the tokens on startup. This
// greatly simplifies the management of ChromeWebView's signin state.
const char* clear_token = "--clear-token-service";
const char* argv[] = {executable, clear_token};
params.argv = argv;
web_main = std::make_unique<web::WebMain>(std::move(params)); web_main = std::make_unique<web::WebMain>(std::move(params));
}); });
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment