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

Unified Diff: chrome/browser/ui/zoom/zoom_controller.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/ui/zoom/zoom_controller.cc
diff --git a/chrome/browser/ui/zoom/zoom_controller.cc b/chrome/browser/ui/zoom/zoom_controller.cc
index d7fcbe845dadbfa2c539ebb5bce847ab8f088163..3bb8140cddca0b18073a667ce1eb03227078f7a0 100644
--- a/chrome/browser/ui/zoom/zoom_controller.cc
+++ b/chrome/browser/ui/zoom/zoom_controller.cc
@@ -4,17 +4,10 @@
#include "chrome/browser/ui/zoom/zoom_controller.h"
-#include "base/prefs/pref_service.h"
-#include "chrome/browser/chrome_notification_types.h"
-#include "chrome/browser/profiles/profile.h"
#include "chrome/browser/ui/zoom/zoom_event_manager.h"
#include "chrome/browser/ui/zoom/zoom_observer.h"
-#include "chrome/common/pref_names.h"
#include "content/public/browser/host_zoom_map.h"
#include "content/public/browser/navigation_entry.h"
-#include "content/public/browser/notification_details.h"
-#include "content/public/browser/notification_service.h"
-#include "content/public/browser/notification_types.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/web_contents.h"
@@ -31,19 +24,12 @@ ZoomController::ZoomController(content::WebContents* web_contents)
zoom_mode_(ZOOM_MODE_DEFAULT),
zoom_level_(1.0),
browser_context_(web_contents->GetBrowserContext()) {
- Profile* profile =
- Profile::FromBrowserContext(web_contents->GetBrowserContext());
- default_zoom_level_.Init(
- prefs::kDefaultZoomLevel,
- profile->GetPrefs(),
- base::Bind(
- &ZoomController::UpdateState, base::Unretained(this), std::string()));
- zoom_level_ = default_zoom_level_.GetValue();
-
- zoom_subscription_ = content::HostZoomMap::GetForBrowserContext(
- browser_context_)->AddZoomLevelChangedCallback(
- base::Bind(&ZoomController::OnZoomLevelChanged,
- base::Unretained(this)));
+ content::HostZoomMap* host_zoom_map =
+ content::HostZoomMap::GetForWebContents(web_contents);
+ zoom_level_ = host_zoom_map->GetDefaultZoomLevel();
+
+ zoom_subscription_ = host_zoom_map->AddZoomLevelChangedCallback(
+ base::Bind(&ZoomController::OnZoomLevelChanged, base::Unretained(this)));
UpdateState(std::string());
}
@@ -51,15 +37,14 @@ ZoomController::ZoomController(content::WebContents* web_contents)
ZoomController::~ZoomController() {}
bool ZoomController::IsAtDefaultZoom() const {
- return content::ZoomValuesEqual(GetZoomLevel(),
- default_zoom_level_.GetValue());
+ return content::ZoomValuesEqual(GetZoomLevel(), GetDefaultZoomLevel());
}
int ZoomController::GetResourceForZoomLevel() const {
if (IsAtDefaultZoom())
return IDR_ZOOM_NORMAL;
- return GetZoomLevel() > default_zoom_level_.GetValue() ? IDR_ZOOM_PLUS
- : IDR_ZOOM_MINUS;
+ return GetZoomLevel() > GetDefaultZoomLevel() ? IDR_ZOOM_PLUS
+ : IDR_ZOOM_MINUS;
}
void ZoomController::AddObserver(ZoomObserver* observer) {
@@ -126,7 +111,7 @@ bool ZoomController::SetZoomLevelByExtension(
}
content::HostZoomMap* zoom_map =
- content::HostZoomMap::GetForBrowserContext(browser_context_);
+ content::HostZoomMap::GetForWebContents(web_contents());
DCHECK(zoom_map);
DCHECK(!event_data_);
event_data_.reset(new ZoomChangedEventData(web_contents(),
@@ -162,7 +147,7 @@ void ZoomController::SetZoomMode(ZoomMode new_mode) {
return;
content::HostZoomMap* zoom_map =
- content::HostZoomMap::GetForBrowserContext(browser_context_);
+ content::HostZoomMap::GetForWebContents(web_contents());
DCHECK(zoom_map);
int render_process_id = web_contents()->GetRenderProcessHost()->GetID();
int render_view_id = web_contents()->GetRenderViewHost()->GetRoutingID();
@@ -227,7 +212,7 @@ void ZoomController::SetZoomMode(ZoomMode new_mode) {
// the zoom level is handled independently.
if (zoom_mode_ != ZOOM_MODE_DISABLED) {
zoom_map->SetTemporaryZoomLevel(
- render_process_id, render_view_id, default_zoom_level_.GetValue());
+ render_process_id, render_view_id, GetDefaultZoomLevel());
zoom_level_ = original_zoom_level;
} else {
// When we don't call any HostZoomMap set functions, we send the event
@@ -241,7 +226,7 @@ void ZoomController::SetZoomMode(ZoomMode new_mode) {
case ZOOM_MODE_DISABLED: {
// The page needs to be zoomed back to default before disabling the zoom
zoom_map->SetTemporaryZoomLevel(
- render_process_id, render_view_id, default_zoom_level_.GetValue());
+ render_process_id, render_view_id, GetDefaultZoomLevel());
break;
}
}
@@ -267,7 +252,22 @@ void ZoomController::WebContentsDestroyed() {
void ZoomController::OnZoomLevelChanged(
const content::HostZoomMap::ZoomLevelChange& change) {
- UpdateState(change.host);
+ if (change.mode == content::HostZoomMap::ZOOM_CHANGED_DEFAULT_ZOOM_LEVEL) {
+ // TODO(wjmaclean) I don't think it should be possible for a change in the
+ // default zoom level to interrupt an in-flight zoom change, but if it can
+ // then we should notify observers here without calling update state.
awong 2014/08/20 19:56:58 If this shouldn't be possible, shouldn't we bias o
wjmaclean 2014/08/20 20:15:45 Actually, this code is gone in my current working
+ DCHECK(!event_data_);
+ double zoom_level = GetZoomLevel();
+ // Only relay the event if our web contents is affected by it.
+ if (zoom_mode_ == ZOOM_MODE_DEFAULT && change.zoom_level == zoom_level) {
+ ZoomChangedEventData zoom_change_data(
+ web_contents(), zoom_level, zoom_level, zoom_mode_, false);
+ FOR_EACH_OBSERVER(
+ ZoomObserver, observers_, OnZoomChanged(zoom_change_data));
+ }
+ } else {
+ UpdateState(change.host);
+ }
}
void ZoomController::UpdateState(const std::string& host) {

Powered by Google App Engine
This is Rietveld 408576698