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

Unified Diff: chrome/browser/ui/webui/options/content_settings_handler.cc

Issue 676083003: Listen to Off The Record profiles in ContentSettingsHandler. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@lkcr
Patch Set: Fix GuestModeOptionsBrowserTest.LoadOptionsByURL by checking duplicate observer. Created 6 years, 2 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
« no previous file with comments | « base/scoped_observer.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/webui/options/content_settings_handler.cc
diff --git a/chrome/browser/ui/webui/options/content_settings_handler.cc b/chrome/browser/ui/webui/options/content_settings_handler.cc
index 6d25547a90f0d4f8491f621390e831dead31fa98..129bc4e9e32ca61e1fb95c2a29f396028a9e282c 100644
--- a/chrome/browser/ui/webui/options/content_settings_handler.cc
+++ b/chrome/browser/ui/webui/options/content_settings_handler.cc
@@ -497,7 +497,14 @@ void ContentSettingsHandler::InitializeHandler() {
base::Unretained(this)));
flash_settings_manager_.reset(new PepperFlashSettingsManager(this, context));
- observer_.Add(Profile::FromWebUI(web_ui())->GetHostContentSettingsMap());
+
+ Profile* profile = Profile::FromWebUI(web_ui());
+ observer_.Add(profile->GetHostContentSettingsMap());
+ if (profile->HasOffTheRecordProfile()) {
+ auto map = profile->GetOffTheRecordProfile()->GetHostContentSettingsMap();
+ if (!observer_.IsObserving(map))
+ observer_.Add(map);
+ }
}
void ContentSettingsHandler::InitializePage() {
@@ -529,16 +536,22 @@ void ContentSettingsHandler::Observe(
const content::NotificationDetails& details) {
switch (type) {
case chrome::NOTIFICATION_PROFILE_DESTROYED: {
- if (content::Source<Profile>(source).ptr()->IsOffTheRecord()) {
+ Profile* profile = content::Source<Profile>(source).ptr();
+ if (profile->IsOffTheRecord() &&
+ observer_.IsObserving(profile->GetHostContentSettingsMap())) {
web_ui()->CallJavascriptFunction(
"ContentSettingsExceptionsArea.OTRProfileDestroyed");
+ observer_.Remove(profile->GetHostContentSettingsMap());
}
break;
}
case chrome::NOTIFICATION_PROFILE_CREATED: {
- if (content::Source<Profile>(source).ptr()->IsOffTheRecord())
+ Profile* profile = content::Source<Profile>(source).ptr();
+ if (profile->IsOffTheRecord()) {
UpdateAllOTRExceptionsViewsFromModel();
+ observer_.Add(profile->GetHostContentSettingsMap());
+ }
break;
}
« no previous file with comments | « base/scoped_observer.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698