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

Unified Diff: chrome/browser/profiles/profile.cc

Issue 393133002: Migrate HostZoomMap to live in StoragePartition. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix test compilation. Created 6 years, 4 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/profiles/profile.cc
diff --git a/chrome/browser/profiles/profile.cc b/chrome/browser/profiles/profile.cc
index 5b6162d7d6d394a9b3a309424c1ae62048cda5d9..27ac91df6f36db7d3c9a0d5ceaad33ba4437d7c6 100644
--- a/chrome/browser/profiles/profile.cc
+++ b/chrome/browser/profiles/profile.cc
@@ -19,6 +19,7 @@
#include "components/sync_driver/sync_prefs.h"
#include "content/public/browser/notification_service.h"
#include "content/public/browser/notification_source.h"
+#include "content/public/browser/storage_partition.h"
#include "content/public/browser/web_contents.h"
#include "content/public/browser/web_ui.h"
@@ -36,6 +37,8 @@
#include "extensions/browser/pref_names.h"
#endif
+using content::HostZoomMap;
+
Profile::Profile()
: restored_last_session_(false),
sent_destroyed_notification_(false),
@@ -144,10 +147,6 @@ void Profile::RegisterProfilePrefs(user_prefs::PrefRegistrySyncable* registry) {
prefs::kSelectFileLastDirectory,
std::string(),
user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
- registry->RegisterDoublePref(
- prefs::kDefaultZoomLevel,
- 0.0,
- user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
registry->RegisterDictionaryPref(
prefs::kPerHostZoomLevels,
user_prefs::PrefRegistrySyncable::UNSYNCABLE_PREF);
@@ -258,3 +257,50 @@ bool ProfileCompare::operator()(Profile* a, Profile* b) const {
return false;
return a->GetOriginalProfile() < b->GetOriginalProfile();
}
+
+double Profile::GetDefaultZoomLevel() {
+ return GetDefaultStoragePartition(this)
+ ->GetHostZoomMap()
+ ->GetDefaultZoomLevel();
+}
+
+PrefService* Profile::GetZoomLevelPrefs() {
+ return GetDefaultStoragePartition(this)->GetZoomLevelPrefs();
+}
+
+void Profile::TrackZoomLevelsFromParent(Profile* parent) {
+ // This function only makes sense in a derived class that implements
+ // HostZoomMaps.
+ DCHECK(GetProfileType() == INCOGNITO_PROFILE &&
+ parent->GetProfileType() == REGULAR_PROFILE);
+
+ // Here we only want to use zoom levels stored in the main-context's default
+ // storage partition. We're not interested in zoom levels in special
+ // partitions, e.g. those used by WebViewGuests.
+ HostZoomMap* host_zoom_map = HostZoomMap::GetDefaultForBrowserContext(this);
+ HostZoomMap* parent_host_zoom_map =
+ HostZoomMap::GetDefaultForBrowserContext(parent);
+ host_zoom_map->CopyFrom(parent_host_zoom_map);
+ // Observe parenti profile's HostZoomMap changes so they can also be applied
awong 2014/08/20 19:56:58 parenti -> parent
wjmaclean 2014/08/20 20:15:45 Done.
+ // to this profile's HostZoomMap.
+ track_zoom_subscription_ = parent_host_zoom_map->AddZoomLevelChangedCallback(
+ base::Bind(&Profile::TrackZoomLevelChanged, base::Unretained(this)));
awong 2014/08/20 19:56:58 Should add a note in TrackZoomLevelChanged() that
wjmaclean 2014/08/20 20:15:45 I will add this in the next CL.
+}
+
+void Profile::TrackZoomLevelChanged(
+ const HostZoomMap::ZoomLevelChange& change) {
+ HostZoomMap* host_zoom_map = HostZoomMap::GetDefaultForBrowserContext(this);
+ switch (change.mode) {
+ case HostZoomMap::ZOOM_CHANGED_DEFAULT_ZOOM_LEVEL:
+ case HostZoomMap::ZOOM_CHANGED_TEMPORARY_ZOOM:
+ return;
+ case HostZoomMap::ZOOM_CHANGED_FOR_HOST:
+ host_zoom_map->SetZoomLevelForHost(change.host, change.zoom_level);
+ return;
+ case HostZoomMap::ZOOM_CHANGED_FOR_SCHEME_AND_HOST:
+ host_zoom_map->SetZoomLevelForHostAndScheme(change.scheme,
+ change.host,
+ change.zoom_level);
+ return;
+ }
+}

Powered by Google App Engine
This is Rietveld 408576698