Chromium Code Reviews| Index: chrome/browser/ui/webui/history_login_handler.cc |
| diff --git a/chrome/browser/ui/webui/history_login_handler.cc b/chrome/browser/ui/webui/history_login_handler.cc |
| index 1e4e89d8dd03d399d5f16ce404fc957fc120fec0..3a86c9bbe833b45cbf1e57314e1a955e025fad35 100644 |
| --- a/chrome/browser/ui/webui/history_login_handler.cc |
| +++ b/chrome/browser/ui/webui/history_login_handler.cc |
| @@ -6,6 +6,7 @@ |
| #include "base/bind.h" |
| #include "base/bind_helpers.h" |
| +#include "base/callback_forward.h" |
|
Dan Beam
2016/09/30 00:47:43
base/callback.h
lshang
2016/09/30 01:31:08
Done.
|
| #include "base/values.h" |
| #include "chrome/browser/profiles/profile.h" |
| #include "chrome/browser/ui/browser.h" |
| @@ -16,7 +17,10 @@ |
| #include "content/public/browser/web_contents.h" |
| #include "content/public/browser/web_ui.h" |
| -HistoryLoginHandler::HistoryLoginHandler() {} |
| +HistoryLoginHandler::HistoryLoginHandler( |
| + const base::Callback<void(bool)>& signin_callback) |
| + : signin_callback_(signin_callback) {} |
| + |
| HistoryLoginHandler::~HistoryLoginHandler() {} |
| void HistoryLoginHandler::RegisterMessages() { |
| @@ -36,13 +40,20 @@ void HistoryLoginHandler::RegisterMessages() { |
| void HistoryLoginHandler::HandleOtherDevicesInitialized( |
| const base::ListValue* /*args*/) { |
| + AllowJavascript(); |
| ProfileInfoChanged(); |
| } |
| void HistoryLoginHandler::ProfileInfoChanged() { |
| bool signed_in = !profile_info_watcher_->GetAuthenticatedUsername().empty(); |
| - web_ui()->CallJavascriptFunctionUnsafe("updateSignInState", |
| - base::FundamentalValue(signed_in)); |
| + if (!signin_callback_.is_null()) |
| + signin_callback_.Run(signed_in); |
| + |
| + if (IsJavascriptAllowed()) { |
| + CallJavascriptFunction("cr.webUIListenerCallback", |
| + base::StringValue("sign-in-state-updated"), |
| + base::FundamentalValue(signed_in)); |
| + } |
| } |
| void HistoryLoginHandler::HandleStartSignInFlow( |