| Index: components/ui/zoom/zoom_controller.cc
|
| diff --git a/chrome/browser/ui/zoom/zoom_controller.cc b/components/ui/zoom/zoom_controller.cc
|
| similarity index 73%
|
| rename from chrome/browser/ui/zoom/zoom_controller.cc
|
| rename to components/ui/zoom/zoom_controller.cc
|
| index 1918ce53e484e81b0eb3aca7b1fe4694d6ba273c..f69fc24f27c0a41d0f536f95433db0e5f8f464de 100644
|
| --- a/chrome/browser/ui/zoom/zoom_controller.cc
|
| +++ b/components/ui/zoom/zoom_controller.cc
|
| @@ -2,11 +2,10 @@
|
| // Use of this source code is governed by a BSD-style license that can be
|
| // found in the LICENSE file.
|
|
|
| -#include "chrome/browser/ui/zoom/zoom_controller.h"
|
| +#include "components/ui/zoom/zoom_controller.h"
|
|
|
| -#include "chrome/browser/ui/sad_tab.h"
|
| -#include "chrome/browser/ui/zoom/zoom_event_manager.h"
|
| -#include "chrome/browser/ui/zoom/zoom_observer.h"
|
| +#include "components/ui/zoom/zoom_event_manager.h"
|
| +#include "components/ui/zoom/zoom_observer.h"
|
| #include "content/public/browser/host_zoom_map.h"
|
| #include "content/public/browser/navigation_details.h"
|
| #include "content/public/browser/navigation_entry.h"
|
| @@ -15,11 +14,11 @@
|
| #include "content/public/browser/web_contents.h"
|
| #include "content/public/common/page_type.h"
|
| #include "content/public/common/page_zoom.h"
|
| -#include "extensions/common/extension.h"
|
| -#include "grit/theme_resources.h"
|
| #include "net/base/net_util.h"
|
|
|
| -DEFINE_WEB_CONTENTS_USER_DATA_KEY(ZoomController);
|
| +DEFINE_WEB_CONTENTS_USER_DATA_KEY(components::ZoomController);
|
| +
|
| +namespace components {
|
|
|
| ZoomController::ZoomController(content::WebContents* web_contents)
|
| : content::WebContentsObserver(web_contents),
|
| @@ -37,17 +36,21 @@ ZoomController::ZoomController(content::WebContents* web_contents)
|
| UpdateState(std::string());
|
| }
|
|
|
| -ZoomController::~ZoomController() {}
|
| +ZoomController::~ZoomController() {
|
| +}
|
|
|
| bool ZoomController::IsAtDefaultZoom() const {
|
| return content::ZoomValuesEqual(GetZoomLevel(), GetDefaultZoomLevel());
|
| }
|
|
|
| -int ZoomController::GetResourceForZoomLevel() const {
|
| - if (IsAtDefaultZoom())
|
| - return IDR_ZOOM_NORMAL;
|
| - return GetZoomLevel() > GetDefaultZoomLevel() ? IDR_ZOOM_PLUS
|
| - : IDR_ZOOM_MINUS;
|
| +ZoomController::RelativeZoom ZoomController::GetZoomRelativeToDefault() const {
|
| + double current_level = GetZoomLevel();
|
| + double default_level = GetDefaultZoomLevel();
|
| + if (content::ZoomValuesEqual(current_level, default_level))
|
| + return ZOOM_AT_DEFAULT_ZOOM;
|
| + else if (current_level > default_level)
|
| + return ZOOM_ABOVE_DEFAULT_ZOOM;
|
| + return ZOOM_BELOW_DEFAULT_ZOOM;
|
| }
|
|
|
| void ZoomController::AddObserver(ZoomObserver* observer) {
|
| @@ -59,9 +62,9 @@ void ZoomController::RemoveObserver(ZoomObserver* observer) {
|
| }
|
|
|
| double ZoomController::GetZoomLevel() const {
|
| - return zoom_mode_ == ZOOM_MODE_MANUAL ?
|
| - zoom_level_:
|
| - content::HostZoomMap::GetZoomLevel(web_contents());
|
| + return zoom_mode_ == ZOOM_MODE_MANUAL
|
| + ? zoom_level_
|
| + : content::HostZoomMap::GetZoomLevel(web_contents());
|
| }
|
|
|
| int ZoomController::GetZoomPercent() const {
|
| @@ -71,13 +74,13 @@ int ZoomController::GetZoomPercent() const {
|
| }
|
|
|
| bool ZoomController::SetZoomLevel(double zoom_level) {
|
| - // An extension did not initiate this zoom change.
|
| - return SetZoomLevelByExtension(zoom_level, NULL);
|
| + // A client did not initiate this zoom change.
|
| + return SetZoomLevelByClient(zoom_level, NULL);
|
| }
|
|
|
| -bool ZoomController::SetZoomLevelByExtension(
|
| +bool ZoomController::SetZoomLevelByClient(
|
| double zoom_level,
|
| - const scoped_refptr<const extensions::Extension>& extension) {
|
| + const scoped_refptr<const ZoomRequestClient>& client) {
|
| content::NavigationEntry* entry =
|
| web_contents()->GetController().GetLastCommittedEntry();
|
| // Cannot zoom in disabled mode. Also, don't allow changing zoom level on
|
| @@ -86,10 +89,10 @@ bool ZoomController::SetZoomLevelByExtension(
|
| !web_contents()->GetRenderViewHost()->IsRenderViewLive())
|
| return false;
|
|
|
| - // Store extension data so that |extension| can be attributed when the zoom
|
| + // Store client data so the |client| can be attributed when the zoom
|
| // change completes. We expect that by the time this function returns that
|
| // any observers that require this information will have requested it.
|
| - last_extension_ = extension;
|
| + last_client_ = client;
|
|
|
| // Do not actually rescale the page in manual mode.
|
| if (zoom_mode_ == ZOOM_MODE_MANUAL) {
|
| @@ -100,18 +103,16 @@ bool ZoomController::SetZoomLevelByExtension(
|
| content::HostZoomMap::ZoomLevelChange change;
|
| change.mode = content::HostZoomMap::ZOOM_CHANGED_TEMPORARY_ZOOM;
|
| change.zoom_level = zoom_level;
|
| - ZoomEventManager::GetForBrowserContext(browser_context_)->
|
| - OnZoomLevelChanged(change);
|
| + ZoomEventManager::GetForBrowserContext(browser_context_)
|
| + ->OnZoomLevelChanged(change);
|
|
|
| - ZoomChangedEventData zoom_change_data(web_contents(),
|
| - old_zoom_level,
|
| - zoom_level_,
|
| - zoom_mode_,
|
| + ZoomChangedEventData zoom_change_data(web_contents(), old_zoom_level,
|
| + zoom_level_, zoom_mode_,
|
| false /* can_show_bubble */);
|
| - FOR_EACH_OBSERVER(
|
| - ZoomObserver, observers_, OnZoomChanged(zoom_change_data));
|
| + FOR_EACH_OBSERVER(ZoomObserver, observers_,
|
| + OnZoomChanged(zoom_change_data));
|
|
|
| - last_extension_ = NULL;
|
| + last_client_ = NULL;
|
| return true;
|
| }
|
|
|
| @@ -119,20 +120,18 @@ bool ZoomController::SetZoomLevelByExtension(
|
| content::HostZoomMap::GetForWebContents(web_contents());
|
| DCHECK(zoom_map);
|
| DCHECK(!event_data_);
|
| - event_data_.reset(new ZoomChangedEventData(web_contents(),
|
| - GetZoomLevel(),
|
| - zoom_level,
|
| - zoom_mode_,
|
| + event_data_.reset(new ZoomChangedEventData(web_contents(), GetZoomLevel(),
|
| + zoom_level, zoom_mode_,
|
| false /* can_show_bubble */));
|
| int render_process_id = web_contents()->GetRenderProcessHost()->GetID();
|
| int render_view_id = web_contents()->GetRenderViewHost()->GetRoutingID();
|
| if (zoom_mode_ == ZOOM_MODE_ISOLATED ||
|
| zoom_map->UsesTemporaryZoomLevel(render_process_id, render_view_id)) {
|
| - zoom_map->SetTemporaryZoomLevel(
|
| - render_process_id, render_view_id, zoom_level);
|
| + zoom_map->SetTemporaryZoomLevel(render_process_id, render_view_id,
|
| + zoom_level);
|
| } else {
|
| if (!entry) {
|
| - last_extension_ = NULL;
|
| + last_client_ = NULL;
|
| return false;
|
| }
|
| std::string host =
|
| @@ -141,7 +140,7 @@ bool ZoomController::SetZoomLevelByExtension(
|
| }
|
|
|
| DCHECK(!event_data_);
|
| - last_extension_ = NULL;
|
| + last_client_ = NULL;
|
| return true;
|
| }
|
|
|
| @@ -157,11 +156,9 @@ void ZoomController::SetZoomMode(ZoomMode new_mode) {
|
| double original_zoom_level = GetZoomLevel();
|
|
|
| DCHECK(!event_data_);
|
| - event_data_.reset(new ZoomChangedEventData(web_contents(),
|
| - original_zoom_level,
|
| - original_zoom_level,
|
| - new_mode,
|
| - new_mode != ZOOM_MODE_DEFAULT));
|
| + event_data_.reset(new ZoomChangedEventData(
|
| + web_contents(), original_zoom_level, original_zoom_level, new_mode,
|
| + new_mode != ZOOM_MODE_DEFAULT));
|
|
|
| switch (new_mode) {
|
| case ZOOM_MODE_DEFAULT: {
|
| @@ -180,8 +177,8 @@ void ZoomController::SetZoomMode(ZoomMode new_mode) {
|
| double origin_zoom_level =
|
| zoom_map->GetZoomLevelForHostAndScheme(url.scheme(), host);
|
| event_data_->new_zoom_level = origin_zoom_level;
|
| - zoom_map->SetTemporaryZoomLevel(
|
| - render_process_id, render_view_id, origin_zoom_level);
|
| + zoom_map->SetTemporaryZoomLevel(render_process_id, render_view_id,
|
| + origin_zoom_level);
|
| } else {
|
| // The host will need a level prior to removing the temporary level.
|
| // We don't want the zoom level to change just because we entered
|
| @@ -198,13 +195,13 @@ void ZoomController::SetZoomMode(ZoomMode new_mode) {
|
| // page needs an initial isolated zoom back to the same level it was at
|
| // in the other mode.
|
| if (zoom_mode_ != ZOOM_MODE_DISABLED) {
|
| - zoom_map->SetTemporaryZoomLevel(
|
| - render_process_id, render_view_id, original_zoom_level);
|
| + zoom_map->SetTemporaryZoomLevel(render_process_id, render_view_id,
|
| + original_zoom_level);
|
| } else {
|
| // When we don't call any HostZoomMap set functions, we send the event
|
| // manually.
|
| - FOR_EACH_OBSERVER(
|
| - ZoomObserver, observers_, OnZoomChanged(*event_data_));
|
| + FOR_EACH_OBSERVER(ZoomObserver, observers_,
|
| + OnZoomChanged(*event_data_));
|
| event_data_.reset();
|
| }
|
| break;
|
| @@ -214,22 +211,22 @@ void ZoomController::SetZoomMode(ZoomMode new_mode) {
|
| // page needs to be resized to the default zoom. While in manual mode,
|
| // the zoom level is handled independently.
|
| if (zoom_mode_ != ZOOM_MODE_DISABLED) {
|
| - zoom_map->SetTemporaryZoomLevel(
|
| - render_process_id, render_view_id, GetDefaultZoomLevel());
|
| + zoom_map->SetTemporaryZoomLevel(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
|
| // manually.
|
| - FOR_EACH_OBSERVER(
|
| - ZoomObserver, observers_, OnZoomChanged(*event_data_));
|
| + FOR_EACH_OBSERVER(ZoomObserver, observers_,
|
| + OnZoomChanged(*event_data_));
|
| event_data_.reset();
|
| }
|
| break;
|
| }
|
| 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, GetDefaultZoomLevel());
|
| + zoom_map->SetTemporaryZoomLevel(render_process_id, render_view_id,
|
| + GetDefaultZoomLevel());
|
| break;
|
| }
|
| }
|
| @@ -285,15 +282,17 @@ void ZoomController::UpdateState(const std::string& host) {
|
| ZoomChangedEventData zoom_change_data = *event_data_;
|
| event_data_.reset();
|
| zoom_change_data.can_show_bubble = can_show_bubble;
|
| - FOR_EACH_OBSERVER(
|
| - ZoomObserver, observers_, OnZoomChanged(zoom_change_data));
|
| + FOR_EACH_OBSERVER(ZoomObserver, observers_,
|
| + OnZoomChanged(zoom_change_data));
|
| } else {
|
| // TODO(wjmaclean) Should we consider having HostZoomMap send both old and
|
| // new zoom levels here?
|
| double zoom_level = GetZoomLevel();
|
| ZoomChangedEventData zoom_change_data(
|
| web_contents(), zoom_level, zoom_level, zoom_mode_, can_show_bubble);
|
| - FOR_EACH_OBSERVER(
|
| - ZoomObserver, observers_, OnZoomChanged(zoom_change_data));
|
| + FOR_EACH_OBSERVER(ZoomObserver, observers_,
|
| + OnZoomChanged(zoom_change_data));
|
| }
|
| }
|
| +
|
| +} // namespace components
|
|
|