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

Unified Diff: chrome/browser/ui/webui/history_ui.cc

Issue 2475593002: MD History: update (instead of re-create) data sources on sign in change (Closed)
Patch Set: old history as well Created 4 years, 1 month 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/history_ui.cc
diff --git a/chrome/browser/ui/webui/history_ui.cc b/chrome/browser/ui/webui/history_ui.cc
index 17ad4d148a2de2a607193a425c425df88d2e6c94..6a977493bab3ba90a5375bc7a2d2343650197b5c 100644
--- a/chrome/browser/ui/webui/history_ui.cc
+++ b/chrome/browser/ui/webui/history_ui.cc
@@ -5,6 +5,7 @@
#include "chrome/browser/ui/webui/history_ui.h"
#include <string>
+#include <utility>
#include "base/command_line.h"
#include "base/memory/ref_counted_memory.h"
@@ -60,20 +61,23 @@ const char kIncognitoModeShortcut[] = "(Ctrl+Shift+N)";
const char kIncognitoModeShortcut[] = "(Shift+Ctrl+N)";
#endif
-content::WebUIDataSource* CreateHistoryUIHTMLSource(Profile* profile) {
- PrefService* prefs = profile->GetPrefs();
+constexpr char kIsUserSignedInKey[] = "isUserSignedIn";
+bool IsSignedIn(Profile* profile) {
// Check if the profile is authenticated. Guest profiles or incognito
// windows may not have a sign in manager, and are considered not
// authenticated.
SigninManagerBase* signin_manager =
SigninManagerFactory::GetForProfile(profile);
- bool is_authenticated = signin_manager != nullptr &&
- signin_manager->IsAuthenticated();
+ return signin_manager && signin_manager->IsAuthenticated();
+}
+
+content::WebUIDataSource* CreateHistoryUIHTMLSource(Profile* profile) {
+ PrefService* prefs = profile->GetPrefs();
content::WebUIDataSource* source =
content::WebUIDataSource::Create(chrome::kChromeUIHistoryFrameHost);
- source->AddBoolean("isUserSignedIn", is_authenticated);
+ source->AddBoolean(kIsUserSignedInKey, IsSignedIn(profile));
#if !defined(OS_ANDROID)
source->AddLocalizedString("collapseSessionMenuItemText",
IDS_HISTORY_OTHER_SESSIONS_COLLAPSE_SESSION);
@@ -173,6 +177,10 @@ content::WebUIDataSource* CreateHistoryUIHTMLSource(Profile* profile) {
} // namespace
HistoryUI::HistoryUI(content::WebUI* web_ui) : WebUIController(web_ui) {
+ // Set up the chrome://history-frame/ source.
+ Profile* profile = Profile::FromWebUI(web_ui);
+ content::WebUIDataSource::Add(profile, CreateHistoryUIHTMLSource(profile));
+
web_ui->AddMessageHandler(new BrowsingHistoryHandler());
web_ui->AddMessageHandler(new MetricsHandler());
@@ -181,7 +189,7 @@ HistoryUI::HistoryUI(content::WebUI* web_ui) : WebUIController(web_ui) {
if (search::IsInstantExtendedAPIEnabled()) {
web_ui->AddMessageHandler(new browser_sync::ForeignSessionHandler());
web_ui->AddMessageHandler(new HistoryLoginHandler(
- base::Bind(&HistoryUI::CreateDataSource, base::Unretained(this))));
+ base::Bind(&HistoryUI::UpdateDataSource, base::Unretained(this))));
}
#endif
@@ -193,14 +201,11 @@ HistoryUI::HistoryUI(content::WebUI* web_ui) : WebUIController(web_ui) {
// This code should be removed as soon as the API is ready.
GURL url = web_ui->GetWebContents()->GetVisibleURL();
if (url.has_query() && url.query() == "reset_ofbh") {
- Profile::FromWebUI(web_ui)->GetPrefs()->SetInteger(
+ profile->GetPrefs()->SetInteger(
browsing_data::prefs::kClearBrowsingDataHistoryNoticeShownTimes, 0);
browsing_data::testing::
g_override_other_forms_of_browsing_history_query = true;
}
-
- // Set up the chrome://history-frame/ source.
- CreateDataSource();
}
HistoryUI::~HistoryUI() {}
@@ -212,10 +217,11 @@ base::RefCountedMemory* HistoryUI::GetFaviconResourceBytes(
LoadDataResourceBytesForScale(IDR_HISTORY_FAVICON, scale_factor);
}
-// TODO(lshang): Change to not re-create data source every time after we use
-// unique_ptr instead of raw pointers for data source.
-void HistoryUI::CreateDataSource() {
+void HistoryUI::UpdateDataSource() {
+ CHECK(web_ui());
Profile* profile = Profile::FromWebUI(web_ui());
- content::WebUIDataSource* data_source = CreateHistoryUIHTMLSource(profile);
- content::WebUIDataSource::Add(profile, data_source);
+ std::unique_ptr<base::DictionaryValue> update(new base::DictionaryValue);
+ update->SetBoolean(kIsUserSignedInKey, IsSignedIn(profile));
+ content::WebUIDataSource::Update(profile, chrome::kChromeUIHistoryFrameHost,
+ std::move(update));
}

Powered by Google App Engine
This is Rietveld 408576698