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 |