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

Unified Diff: ios/chrome/browser/ui/webui/signin_internals_ui_ios.cc

Issue 2580333003: Upstream Chrome on iOS source code [10/11]. (Closed)
Patch Set: Created 4 years 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
« no previous file with comments | « ios/chrome/browser/ui/webui/signin_internals_ui_ios.h ('k') | ios/chrome/browser/ui/webui/web_ui_egtest.mm » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ios/chrome/browser/ui/webui/signin_internals_ui_ios.cc
diff --git a/ios/chrome/browser/ui/webui/signin_internals_ui_ios.cc b/ios/chrome/browser/ui/webui/signin_internals_ui_ios.cc
new file mode 100644
index 0000000000000000000000000000000000000000..903b6aef847fcb66f82767e65314c0c912373b41
--- /dev/null
+++ b/ios/chrome/browser/ui/webui/signin_internals_ui_ios.cc
@@ -0,0 +1,106 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "ios/chrome/browser/ui/webui/signin_internals_ui_ios.h"
+
+#include "base/hash.h"
+#include "components/grit/components_resources.h"
+#include "components/signin/core/browser/about_signin_internals.h"
+#include "components/signin/core/browser/gaia_cookie_manager_service.h"
+#include "ios/chrome/browser/browser_state/chrome_browser_state.h"
+#include "ios/chrome/browser/chrome_url_constants.h"
+#include "ios/chrome/browser/signin/about_signin_internals_factory.h"
+#include "ios/chrome/browser/signin/gaia_cookie_manager_service_factory.h"
+#include "ios/web/public/web_ui_ios_data_source.h"
+#include "ios/web/public/webui/web_ui_ios.h"
+#include "ui/base/resource/resource_bundle.h"
+
+namespace {
+
+web::WebUIIOSDataSource* CreateSignInInternalsHTMLSource() {
+ web::WebUIIOSDataSource* source =
+ web::WebUIIOSDataSource::Create(kChromeUISignInInternalsHost);
+
+ source->SetJsonPath("strings.js");
+ source->AddResourcePath("signin_internals.js", IDR_SIGNIN_INTERNALS_INDEX_JS);
+ source->SetDefaultResource(IDR_SIGNIN_INTERNALS_INDEX_HTML);
+ return source;
+}
+
+} // namespace
+
+SignInInternalsUIIOS::SignInInternalsUIIOS(web::WebUIIOS* web_ui)
+ : WebUIIOSController(web_ui) {
+ ios::ChromeBrowserState* browser_state =
+ ios::ChromeBrowserState::FromWebUIIOS(web_ui);
+ DCHECK(browser_state);
+ web::WebUIIOSDataSource::Add(browser_state,
+ CreateSignInInternalsHTMLSource());
+
+ AboutSigninInternals* about_signin_internals =
+ ios::AboutSigninInternalsFactory::GetForBrowserState(browser_state);
+ if (about_signin_internals)
+ about_signin_internals->AddSigninObserver(this);
+}
+
+SignInInternalsUIIOS::~SignInInternalsUIIOS() {
+ ios::ChromeBrowserState* browser_state =
+ ios::ChromeBrowserState::FromWebUIIOS(web_ui());
+ DCHECK(browser_state);
+ AboutSigninInternals* about_signin_internals =
+ ios::AboutSigninInternalsFactory::GetForBrowserState(browser_state);
+ if (about_signin_internals)
+ about_signin_internals->RemoveSigninObserver(this);
+}
+
+bool SignInInternalsUIIOS::OverrideHandleWebUIIOSMessage(
+ const GURL& source_url,
+ const std::string& name,
+ const base::ListValue& content) {
+ if (name == "getSigninInfo") {
+ ios::ChromeBrowserState* browser_state =
+ ios::ChromeBrowserState::FromWebUIIOS(web_ui());
+ DCHECK(browser_state);
+
+ AboutSigninInternals* about_signin_internals =
+ ios::AboutSigninInternalsFactory::GetForBrowserState(browser_state);
+ // TODO(vishwath): The UI would look better if we passed in a dict with some
+ // reasonable defaults, so the about:signin-internals page doesn't look
+ // empty in incognito mode. Alternatively, we could force about:signin to
+ // open in non-incognito mode always (like about:settings for ex.).
+ if (about_signin_internals) {
+ const std::string& reply_handler =
+ "chrome.signin.getSigninInfo.handleReply";
+ web_ui()->CallJavascriptFunction(
+ reply_handler, *about_signin_internals->GetSigninStatus());
+ std::vector<gaia::ListedAccount> cookie_accounts;
+ GaiaCookieManagerService* cookie_manager_service =
+ ios::GaiaCookieManagerServiceFactory::GetForBrowserState(
+ browser_state);
+ std::vector<gaia::ListedAccount> signed_out_accounts;
+ if (cookie_manager_service->ListAccounts(
+ &cookie_accounts, &signed_out_accounts,
+ "ChromiumSignInInternalsUIIOS")) {
+ about_signin_internals->OnGaiaAccountsInCookieUpdated(
+ cookie_accounts, signed_out_accounts,
+ GoogleServiceAuthError(GoogleServiceAuthError::NONE));
+ }
+
+ return true;
+ }
+ }
+ return false;
+}
+
+void SignInInternalsUIIOS::OnSigninStateChanged(
+ const base::DictionaryValue* info) {
+ const std::string& event_handler = "chrome.signin.onSigninInfoChanged.fire";
+ web_ui()->CallJavascriptFunction(event_handler, *info);
+}
+
+void SignInInternalsUIIOS::OnCookieAccountsFetched(
+ const base::DictionaryValue* info) {
+ web_ui()->CallJavascriptFunction("chrome.signin.onCookieAccountsFetched.fire",
+ *info);
+}
« no previous file with comments | « ios/chrome/browser/ui/webui/signin_internals_ui_ios.h ('k') | ios/chrome/browser/ui/webui/web_ui_egtest.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698