Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(81)

Unified Diff: chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc

Issue 1012083002: Resolve new GAIA flow's infinite loop. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc
diff --git a/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc b/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc
index 5d72124298f48283832b7f02f6a822e7f1555288..82c5c815d12513402c276469cb173bce306aa4db 100644
--- a/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc
+++ b/chrome/browser/ui/webui/chromeos/login/gaia_screen_handler.cc
@@ -38,6 +38,9 @@
#include "components/user_manager/user_manager.h"
#include "content/public/browser/browser_thread.h"
#include "content/public/browser/render_frame_host.h"
+#include "content/public/browser/storage_partition.h"
+#include "content/public/browser/web_contents.h"
+#include "content/public/common/url_constants.h"
#include "google_apis/gaia/gaia_auth_util.h"
#include "google_apis/gaia/gaia_switches.h"
#include "google_apis/gaia/gaia_urls.h"
@@ -643,6 +646,31 @@ void GaiaScreenHandler::OnDnsCleared() {
void GaiaScreenHandler::StartClearingCookies(
const base::Closure& on_clear_callback) {
cookies_cleared_ = false;
+
+ if (StartupUtils::IsWebviewSigninEnabled()) {
xiyuan 2015/03/17 16:05:53 Can we move the webview data clearing code into Pr
Ivan Podogov 2015/03/18 07:36:20 Can we make it a separate issue? Right now we are
xiyuan 2015/03/18 16:52:27 I agree introducing gaia screen details such as We
+ content::WebContents* contents = web_ui()->GetWebContents();
+ content::BrowserContext* context = contents->GetBrowserContext();
+ GURL guest_url(std::string(content::kGuestScheme) +
+ url::kStandardSchemeSeparator +
+ contents->GetLastCommittedURL().GetContent());
xiyuan 2015/03/17 16:05:52 This is not a reliable way. I happened to chat wit
Ivan Podogov 2015/03/18 07:36:20 Potentially it will give us a list of URLs (and/or
Ivan Podogov 2015/03/18 07:53:05 Oh, and one more thing to keep in mind here: in th
xiyuan 2015/03/18 16:52:27 We can DCHECK only one guest URL is returned.
Ivan Podogov 2015/03/19 09:29:45 Hm, somehow this line still returned me the same p
+ content::StoragePartition* partition =
+ content::BrowserContext::GetStoragePartitionForSite(context, guest_url);
+ DCHECK(partition);
+ if (partition) {
Roman Sorokin (ftl) 2015/03/17 17:00:41 Handling error after DCHECK is forbidden. See here
Ivan Podogov 2015/03/18 07:36:20 In fact, Dmitry asked me to do it this way, for th
+ LOG(ERROR) << "Start clearing cookies for " << guest_url.spec();
Roman Sorokin (ftl) 2015/03/17 17:00:41 Why is it LOG(ERROR)?
Ivan Podogov 2015/03/18 07:36:20 Forgotten debug logging, shouldn't be here.
+ partition->ClearData(
+ content::StoragePartition::REMOVE_DATA_MASK_ALL,
+ content::StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL, GURL(),
+ content::StoragePartition::OriginMatcherFunction(), base::Time(),
+ base::Time::Now(),
+ base::Bind(&GaiaScreenHandler::OnCookiesCleared,
+ weak_factory_.GetWeakPtr(), on_clear_callback));
+ return;
+ } else {
Roman Sorokin (ftl) 2015/03/17 17:00:41 nit: don't use else after return.
Ivan Podogov 2015/03/18 07:36:20 Done.
+ LOG(ERROR) << "Storage partition not found for " << guest_url.spec();
+ }
+ }
+
ProfileHelper* profile_helper = ProfileHelper::Get();
LOG_ASSERT(Profile::FromWebUI(web_ui()) ==
profile_helper->GetSigninProfile());

Powered by Google App Engine
This is Rietveld 408576698