| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/browser/ui/zoom/zoom_controller.h" | 5 #include "chrome/browser/ui/zoom/zoom_controller.h" |
| 6 | 6 |
| 7 #include "chrome/browser/ui/sad_tab.h" | 7 #include "chrome/browser/ui/sad_tab.h" |
| 8 #include "chrome/browser/ui/zoom/zoom_event_manager.h" | 8 #include "chrome/browser/ui/zoom/zoom_event_manager.h" |
| 9 #include "chrome/browser/ui/zoom/zoom_observer.h" | 9 #include "chrome/browser/ui/zoom/zoom_observer.h" |
| 10 #include "content/public/browser/host_zoom_map.h" | 10 #include "content/public/browser/host_zoom_map.h" |
| 11 #include "content/public/browser/navigation_details.h" | 11 #include "content/public/browser/navigation_details.h" |
| 12 #include "content/public/browser/navigation_entry.h" | 12 #include "content/public/browser/navigation_entry.h" |
| 13 #include "content/public/browser/render_process_host.h" | 13 #include "content/public/browser/render_process_host.h" |
| 14 #include "content/public/browser/render_view_host.h" | 14 #include "content/public/browser/render_view_host.h" |
| 15 #include "content/public/browser/web_contents.h" | 15 #include "content/public/browser/web_contents.h" |
| 16 #include "content/public/common/page_type.h" | 16 #include "content/public/common/page_type.h" |
| 17 #include "content/public/common/page_zoom.h" | 17 #include "content/public/common/page_zoom.h" |
| 18 #include "extensions/common/extension.h" | 18 #include "extensions/common/extension.h" |
| 19 #include "grit/theme_resources.h" | 19 #include "grit/theme_resources.h" |
| 20 #include "net/base/net_util.h" | 20 #include "net/base/net_util.h" |
| 21 | 21 |
| 22 DEFINE_WEB_CONTENTS_USER_DATA_KEY(ZoomController); | 22 DEFINE_WEB_CONTENTS_USER_DATA_KEY(ZoomController); |
| 23 | 23 |
| 24 ZoomController::ZoomController(content::WebContents* web_contents) | 24 ZoomController::ZoomController(content::WebContents* web_contents) |
| 25 : content::WebContentsObserver(web_contents), | 25 : content::WebContentsObserver(web_contents), |
| 26 can_show_bubble_(true), | 26 can_show_bubble_(true), |
| 27 zoom_mode_(ZOOM_MODE_DEFAULT), | 27 zoom_mode_(ZOOM_MODE_DEFAULT), |
| 28 zoom_level_(1.0), | 28 zoom_level_(1.0), |
| 29 browser_context_(web_contents->GetBrowserContext()) { | 29 browser_context_(web_contents->GetBrowserContext()) { |
| 30 // TODO(wjmaclean) Make calls to HostZoomMap::GetDefaultForBrowserContext() | |
| 31 // refer to the webcontents-specific HostZoomMap when that becomes available. | |
| 32 content::HostZoomMap* host_zoom_map = | 30 content::HostZoomMap* host_zoom_map = |
| 33 content::HostZoomMap::GetDefaultForBrowserContext(browser_context_); | 31 content::HostZoomMap::GetForWebContents(web_contents); |
| 34 zoom_level_ = host_zoom_map->GetDefaultZoomLevel(); | 32 zoom_level_ = host_zoom_map->GetDefaultZoomLevel(); |
| 35 | 33 |
| 36 zoom_subscription_ = host_zoom_map->AddZoomLevelChangedCallback( | 34 zoom_subscription_ = host_zoom_map->AddZoomLevelChangedCallback( |
| 37 base::Bind(&ZoomController::OnZoomLevelChanged, base::Unretained(this))); | 35 base::Bind(&ZoomController::OnZoomLevelChanged, base::Unretained(this))); |
| 38 | 36 |
| 39 UpdateState(std::string()); | 37 UpdateState(std::string()); |
| 40 } | 38 } |
| 41 | 39 |
| 42 ZoomController::~ZoomController() {} | 40 ZoomController::~ZoomController() {} |
| 43 | 41 |
| (...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 111 zoom_mode_, | 109 zoom_mode_, |
| 112 false /* can_show_bubble */); | 110 false /* can_show_bubble */); |
| 113 FOR_EACH_OBSERVER( | 111 FOR_EACH_OBSERVER( |
| 114 ZoomObserver, observers_, OnZoomChanged(zoom_change_data)); | 112 ZoomObserver, observers_, OnZoomChanged(zoom_change_data)); |
| 115 | 113 |
| 116 last_extension_ = NULL; | 114 last_extension_ = NULL; |
| 117 return true; | 115 return true; |
| 118 } | 116 } |
| 119 | 117 |
| 120 content::HostZoomMap* zoom_map = | 118 content::HostZoomMap* zoom_map = |
| 121 content::HostZoomMap::GetDefaultForBrowserContext(browser_context_); | 119 content::HostZoomMap::GetForWebContents(web_contents()); |
| 122 DCHECK(zoom_map); | 120 DCHECK(zoom_map); |
| 123 DCHECK(!event_data_); | 121 DCHECK(!event_data_); |
| 124 event_data_.reset(new ZoomChangedEventData(web_contents(), | 122 event_data_.reset(new ZoomChangedEventData(web_contents(), |
| 125 GetZoomLevel(), | 123 GetZoomLevel(), |
| 126 zoom_level, | 124 zoom_level, |
| 127 zoom_mode_, | 125 zoom_mode_, |
| 128 false /* can_show_bubble */)); | 126 false /* can_show_bubble */)); |
| 129 int render_process_id = web_contents()->GetRenderProcessHost()->GetID(); | 127 int render_process_id = web_contents()->GetRenderProcessHost()->GetID(); |
| 130 int render_view_id = web_contents()->GetRenderViewHost()->GetRoutingID(); | 128 int render_view_id = web_contents()->GetRenderViewHost()->GetRoutingID(); |
| 131 if (zoom_mode_ == ZOOM_MODE_ISOLATED || | 129 if (zoom_mode_ == ZOOM_MODE_ISOLATED || |
| (...skipping 13 matching lines...) Expand all Loading... |
| 145 DCHECK(!event_data_); | 143 DCHECK(!event_data_); |
| 146 last_extension_ = NULL; | 144 last_extension_ = NULL; |
| 147 return true; | 145 return true; |
| 148 } | 146 } |
| 149 | 147 |
| 150 void ZoomController::SetZoomMode(ZoomMode new_mode) { | 148 void ZoomController::SetZoomMode(ZoomMode new_mode) { |
| 151 if (new_mode == zoom_mode_) | 149 if (new_mode == zoom_mode_) |
| 152 return; | 150 return; |
| 153 | 151 |
| 154 content::HostZoomMap* zoom_map = | 152 content::HostZoomMap* zoom_map = |
| 155 content::HostZoomMap::GetDefaultForBrowserContext(browser_context_); | 153 content::HostZoomMap::GetForWebContents(web_contents()); |
| 156 DCHECK(zoom_map); | 154 DCHECK(zoom_map); |
| 157 int render_process_id = web_contents()->GetRenderProcessHost()->GetID(); | 155 int render_process_id = web_contents()->GetRenderProcessHost()->GetID(); |
| 158 int render_view_id = web_contents()->GetRenderViewHost()->GetRoutingID(); | 156 int render_view_id = web_contents()->GetRenderViewHost()->GetRoutingID(); |
| 159 double original_zoom_level = GetZoomLevel(); | 157 double original_zoom_level = GetZoomLevel(); |
| 160 | 158 |
| 161 DCHECK(!event_data_); | 159 DCHECK(!event_data_); |
| 162 event_data_.reset(new ZoomChangedEventData(web_contents(), | 160 event_data_.reset(new ZoomChangedEventData(web_contents(), |
| 163 original_zoom_level, | 161 original_zoom_level, |
| 164 original_zoom_level, | 162 original_zoom_level, |
| 165 new_mode, | 163 new_mode, |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 292 } else { | 290 } else { |
| 293 // TODO(wjmaclean) Should we consider having HostZoomMap send both old and | 291 // TODO(wjmaclean) Should we consider having HostZoomMap send both old and |
| 294 // new zoom levels here? | 292 // new zoom levels here? |
| 295 double zoom_level = GetZoomLevel(); | 293 double zoom_level = GetZoomLevel(); |
| 296 ZoomChangedEventData zoom_change_data( | 294 ZoomChangedEventData zoom_change_data( |
| 297 web_contents(), zoom_level, zoom_level, zoom_mode_, can_show_bubble); | 295 web_contents(), zoom_level, zoom_level, zoom_mode_, can_show_bubble); |
| 298 FOR_EACH_OBSERVER( | 296 FOR_EACH_OBSERVER( |
| 299 ZoomObserver, observers_, OnZoomChanged(zoom_change_data)); | 297 ZoomObserver, observers_, OnZoomChanged(zoom_change_data)); |
| 300 } | 298 } |
| 301 } | 299 } |
| OLD | NEW |