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

Side by Side Diff: chrome/browser/ui/zoom/zoom_controller.cc

Issue 609983002: Fix ZoomController crash on kiosk launching. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 6 years, 2 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 unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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"
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
72 } 72 }
73 73
74 bool ZoomController::SetZoomLevel(double zoom_level) { 74 bool ZoomController::SetZoomLevel(double zoom_level) {
75 // An extension did not initiate this zoom change. 75 // An extension did not initiate this zoom change.
76 return SetZoomLevelByExtension(zoom_level, NULL); 76 return SetZoomLevelByExtension(zoom_level, NULL);
77 } 77 }
78 78
79 bool ZoomController::SetZoomLevelByExtension( 79 bool ZoomController::SetZoomLevelByExtension(
80 double zoom_level, 80 double zoom_level,
81 const scoped_refptr<const extensions::Extension>& extension) { 81 const scoped_refptr<const extensions::Extension>& extension) {
82 content::NavigationEntry* entry =
83 web_contents()->GetController().GetLastCommittedEntry();
82 bool is_normal_page = 84 bool is_normal_page =
83 web_contents()->GetController().GetLastCommittedEntry()->GetPageType() == 85 entry && entry->GetPageType() == content::PAGE_TYPE_NORMAL;
wjmaclean 2014/09/26 21:05:44 If there's no committed entry, what are we zooming
xiyuan 2014/09/26 21:39:37 If there is no committed entry, |is_normal_page| w
wjmaclean 2014/09/26 23:48:39 Sorry ... I realized shortly after I left the offi
84 content::PAGE_TYPE_NORMAL;
85 // Cannot zoom in disabled mode. Also, don't allow changing zoom level on 86 // Cannot zoom in disabled mode. Also, don't allow changing zoom level on
86 // a crashed tab, an error page or an interstitial page. 87 // a crashed tab, an error page or an interstitial page.
87 if (zoom_mode_ == ZOOM_MODE_DISABLED || 88 if (zoom_mode_ == ZOOM_MODE_DISABLED ||
88 !web_contents()->GetRenderViewHost()->IsRenderViewLive() || 89 !web_contents()->GetRenderViewHost()->IsRenderViewLive() ||
89 !is_normal_page) 90 !is_normal_page)
90 return false; 91 return false;
91 92
92 // Store extension data so that |extension| can be attributed when the zoom 93 // Store extension data so that |extension| can be attributed when the zoom
93 // change completes. We expect that by the time this function returns that 94 // change completes. We expect that by the time this function returns that
94 // any observers that require this information will have requested it. 95 // any observers that require this information will have requested it.
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after
127 zoom_level, 128 zoom_level,
128 zoom_mode_, 129 zoom_mode_,
129 false /* can_show_bubble */)); 130 false /* can_show_bubble */));
130 int render_process_id = web_contents()->GetRenderProcessHost()->GetID(); 131 int render_process_id = web_contents()->GetRenderProcessHost()->GetID();
131 int render_view_id = web_contents()->GetRenderViewHost()->GetRoutingID(); 132 int render_view_id = web_contents()->GetRenderViewHost()->GetRoutingID();
132 if (zoom_mode_ == ZOOM_MODE_ISOLATED || 133 if (zoom_mode_ == ZOOM_MODE_ISOLATED ||
133 zoom_map->UsesTemporaryZoomLevel(render_process_id, render_view_id)) { 134 zoom_map->UsesTemporaryZoomLevel(render_process_id, render_view_id)) {
134 zoom_map->SetTemporaryZoomLevel( 135 zoom_map->SetTemporaryZoomLevel(
135 render_process_id, render_view_id, zoom_level); 136 render_process_id, render_view_id, zoom_level);
136 } else { 137 } else {
137 content::NavigationEntry* entry =
138 web_contents()->GetController().GetLastCommittedEntry();
139
140 if (!entry) { 138 if (!entry) {
141 last_extension_ = NULL; 139 last_extension_ = NULL;
142 return false; 140 return false;
143 } 141 }
144 std::string host = net::GetHostOrSpecFromURL(entry->GetURL()); 142 std::string host = net::GetHostOrSpecFromURL(entry->GetURL());
145 zoom_map->SetZoomLevelForHost(host, zoom_level); 143 zoom_map->SetZoomLevelForHost(host, zoom_level);
146 } 144 }
147 145
148 DCHECK(!event_data_); 146 DCHECK(!event_data_);
149 last_extension_ = NULL; 147 last_extension_ = NULL;
(...skipping 141 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 } else { 289 } else {
292 // TODO(wjmaclean) Should we consider having HostZoomMap send both old and 290 // TODO(wjmaclean) Should we consider having HostZoomMap send both old and
293 // new zoom levels here? 291 // new zoom levels here?
294 double zoom_level = GetZoomLevel(); 292 double zoom_level = GetZoomLevel();
295 ZoomChangedEventData zoom_change_data( 293 ZoomChangedEventData zoom_change_data(
296 web_contents(), zoom_level, zoom_level, zoom_mode_, can_show_bubble); 294 web_contents(), zoom_level, zoom_level, zoom_mode_, can_show_bubble);
297 FOR_EACH_OBSERVER( 295 FOR_EACH_OBSERVER(
298 ZoomObserver, observers_, OnZoomChanged(zoom_change_data)); 296 ZoomObserver, observers_, OnZoomChanged(zoom_change_data));
299 } 297 }
300 } 298 }
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698