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

Side by Side Diff: content/browser/web_contents/web_contents_impl.cc

Issue 224733018: Changes to content/ to facilitate new zoom extension API (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 8 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 | Annotate | Revision Log
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 "content/browser/web_contents/web_contents_impl.h" 5 #include "content/browser/web_contents/web_contents_impl.h"
6 6
7 #include <utility> 7 #include <utility>
8 8
9 #include "base/command_line.h" 9 #include "base/command_line.h"
10 #include "base/debug/trace_event.h" 10 #include "base/debug/trace_event.h"
(...skipping 320 matching lines...) Expand 10 before | Expand all | Expand 10 after
331 last_active_time_(base::TimeTicks::Now()), 331 last_active_time_(base::TimeTicks::Now()),
332 closed_by_user_gesture_(false), 332 closed_by_user_gesture_(false),
333 minimum_zoom_percent_(static_cast<int>(kMinimumZoomFactor * 100)), 333 minimum_zoom_percent_(static_cast<int>(kMinimumZoomFactor * 100)),
334 maximum_zoom_percent_(static_cast<int>(kMaximumZoomFactor * 100)), 334 maximum_zoom_percent_(static_cast<int>(kMaximumZoomFactor * 100)),
335 temporary_zoom_settings_(false), 335 temporary_zoom_settings_(false),
336 totalPinchGestureAmount_(0), 336 totalPinchGestureAmount_(0),
337 currentPinchZoomStepDelta_(0), 337 currentPinchZoomStepDelta_(0),
338 color_chooser_identifier_(0), 338 color_chooser_identifier_(0),
339 render_view_message_source_(NULL), 339 render_view_message_source_(NULL),
340 fullscreen_widget_routing_id_(MSG_ROUTING_NONE), 340 fullscreen_widget_routing_id_(MSG_ROUTING_NONE),
341 is_subframe_(false) { 341 is_subframe_(false),
342 current_zoom_mode_(kZoomModeDefault),
343 current_zoom_id_(0) {
342 for (size_t i = 0; i < g_created_callbacks.Get().size(); i++) 344 for (size_t i = 0; i < g_created_callbacks.Get().size(); i++)
343 g_created_callbacks.Get().at(i).Run(this); 345 g_created_callbacks.Get().at(i).Run(this);
344 frame_tree_.SetFrameRemoveListener( 346 frame_tree_.SetFrameRemoveListener(
345 base::Bind(&WebContentsImpl::OnFrameRemoved, 347 base::Bind(&WebContentsImpl::OnFrameRemoved,
346 base::Unretained(this))); 348 base::Unretained(this)));
347 } 349 }
348 350
349 WebContentsImpl::~WebContentsImpl() { 351 WebContentsImpl::~WebContentsImpl() {
350 is_being_destroyed_ = true; 352 is_being_destroyed_ = true;
351 353
(...skipping 1627 matching lines...) Expand 10 before | Expand all | Expand 10 after
1979 } 1981 }
1980 1982
1981 void WebContentsImpl::SetClosedByUserGesture(bool value) { 1983 void WebContentsImpl::SetClosedByUserGesture(bool value) {
1982 closed_by_user_gesture_ = value; 1984 closed_by_user_gesture_ = value;
1983 } 1985 }
1984 1986
1985 bool WebContentsImpl::GetClosedByUserGesture() const { 1987 bool WebContentsImpl::GetClosedByUserGesture() const {
1986 return closed_by_user_gesture_; 1988 return closed_by_user_gesture_;
1987 } 1989 }
1988 1990
1991 content::ZoomMode WebContentsImpl::GetZoomMode() const {
1992 return current_zoom_mode_;
1993 }
1994
1989 double WebContentsImpl::GetZoomLevel() const { 1995 double WebContentsImpl::GetZoomLevel() const {
1996 if (current_zoom_mode_ == kZoomModeDisabled)
1997 return 0;
1998
1990 HostZoomMapImpl* zoom_map = static_cast<HostZoomMapImpl*>( 1999 HostZoomMapImpl* zoom_map = static_cast<HostZoomMapImpl*>(
1991 HostZoomMap::GetForBrowserContext(GetBrowserContext())); 2000 HostZoomMap::GetForBrowserContext(GetBrowserContext()));
1992 if (!zoom_map) 2001 if (!zoom_map)
1993 return 0; 2002 return 0;
1994 2003
1995 double zoom_level; 2004 double zoom_level;
1996 if (temporary_zoom_settings_) { 2005 if (temporary_zoom_settings_) {
1997 zoom_level = zoom_map->GetTemporaryZoomLevel( 2006 zoom_level = zoom_map->GetTemporaryZoomLevel(
1998 GetRenderProcessHost()->GetID(), GetRenderViewHost()->GetRoutingID()); 2007 GetRenderProcessHost()->GetID(), GetRenderViewHost()->GetRoutingID());
1999 } else { 2008 } else {
(...skipping 78 matching lines...) Expand 10 before | Expand all | Expand 10 after
2078 const ImageDownloadCallback& callback) { 2087 const ImageDownloadCallback& callback) {
2079 int id = StartDownload(GetMainFrame(), url, is_favicon, max_bitmap_size); 2088 int id = StartDownload(GetMainFrame(), url, is_favicon, max_bitmap_size);
2080 image_download_map_[id] = callback; 2089 image_download_map_[id] = callback;
2081 return id; 2090 return id;
2082 } 2091 }
2083 2092
2084 bool WebContentsImpl::IsSubframe() const { 2093 bool WebContentsImpl::IsSubframe() const {
2085 return is_subframe_; 2094 return is_subframe_;
2086 } 2095 }
2087 2096
2088 void WebContentsImpl::SetZoomLevel(double level) { 2097 int WebContentsImpl::SetZoomLevel(double level) {
2089 Send(new ViewMsg_SetZoomLevel(GetRoutingID(), level)); 2098 if (current_zoom_mode_ == kZoomModeDisabled)
2099 return 0;
2100
2101 ++current_zoom_id_;
2102
2103 ZoomChangeDetails zoom_change_details;
2104 zoom_change_details.old_zoom_level = GetZoomLevel();
2105 zoom_change_details.new_zoom_level = level;
2106 zoom_change_details.zoom_mode = current_zoom_mode_;
2107 NotificationService::current()->Notify(
2108 content::NOTIFICATION_WEB_CONTENTS_ZOOM_CHANGE,
2109 Source<WebContents>(this),
2110 content::Details<ZoomChangeDetails>(
2111 &zoom_change_details));
2112
2113 Send(new ViewMsg_SetZoomLevel(GetRoutingID(), current_zoom_id_, level,
2114 current_zoom_mode_));
2090 BrowserPluginEmbedder* embedder = GetBrowserPluginEmbedder(); 2115 BrowserPluginEmbedder* embedder = GetBrowserPluginEmbedder();
2091 if (embedder) 2116 if (embedder)
2092 embedder->SetZoomLevel(level); 2117 embedder->SetZoomLevel(level);
2118
2119 return current_zoom_id_;
2120 }
2121
2122 void WebContentsImpl::SetZoomMode(ZoomMode mode) {
2123 if (mode == current_zoom_mode_)
2124 return;
2125
2126 double original_zoom_level = GetZoomLevel();
2127
2128 if (mode == kZoomModeDefault) {
2129 Send(new ViewMsg_SetZoomLevel(GetRoutingID(), 0, original_zoom_level,
2130 kZoomModeDefault));
2131 NotificationService::current()->Notify(
2132 NOTIFICATION_WEB_CONTENTS_NO_TEMPORARY_ZOOM_LEVEL,
2133 Source<WebContents>(this),
2134 NotificationService::NoDetails());
2135 } else if (mode == kZoomModeIsolated) {
2136 if (current_zoom_mode_ != kZoomModeDisabled) {
2137 Send(new ViewMsg_SetZoomLevel(GetRoutingID(), 0, original_zoom_level,
2138 kZoomModeIsolated));
2139 }
2140 } else if (mode == kZoomModeManual) {
2141 if (current_zoom_mode_ != kZoomModeDisabled) {
2142 Send(new ViewMsg_SetZoomLevel(GetRoutingID(), 0, 0, kZoomModeIsolated));
2143 current_zoom_mode_ = mode;
2144 SetZoomLevel(original_zoom_level);
2145 }
2146 } else if (mode == kZoomModeDisabled) {
2147 if (current_zoom_mode_ != kZoomModeManual) {
2148 Send(new ViewMsg_SetZoomLevel(GetRoutingID(), 0, 0, kZoomModeIsolated));
2149 }
2150 } else {
2151 NOTREACHED();
2152 }
2153
2154 current_zoom_mode_ = mode;
2155 temporary_zoom_settings_ = mode != kZoomModeDefault;
2093 } 2156 }
2094 2157
2095 void WebContentsImpl::Find(int request_id, 2158 void WebContentsImpl::Find(int request_id,
2096 const base::string16& search_text, 2159 const base::string16& search_text,
2097 const blink::WebFindOptions& options) { 2160 const blink::WebFindOptions& options) {
2098 Send(new ViewMsg_Find(GetRoutingID(), request_id, search_text, options)); 2161 Send(new ViewMsg_Find(GetRoutingID(), request_id, search_text, options));
2099 } 2162 }
2100 2163
2101 void WebContentsImpl::StopFinding(StopFindAction action) { 2164 void WebContentsImpl::StopFinding(StopFindAction action) {
2102 Send(new ViewMsg_StopFinding(GetRoutingID(), action)); 2165 Send(new ViewMsg_StopFinding(GetRoutingID(), action));
(...skipping 316 matching lines...) Expand 10 before | Expand all | Expand 10 after
2419 void WebContentsImpl::OnGoToEntryAtOffset(int offset) { 2482 void WebContentsImpl::OnGoToEntryAtOffset(int offset) {
2420 if (!delegate_ || delegate_->OnGoToEntryOffset(offset)) 2483 if (!delegate_ || delegate_->OnGoToEntryOffset(offset))
2421 controller_.GoToOffset(offset); 2484 controller_.GoToOffset(offset);
2422 } 2485 }
2423 2486
2424 void WebContentsImpl::OnUpdateZoomLimits(int minimum_percent, 2487 void WebContentsImpl::OnUpdateZoomLimits(int minimum_percent,
2425 int maximum_percent, 2488 int maximum_percent,
2426 bool remember) { 2489 bool remember) {
2427 minimum_zoom_percent_ = minimum_percent; 2490 minimum_zoom_percent_ = minimum_percent;
2428 maximum_zoom_percent_ = maximum_percent; 2491 maximum_zoom_percent_ = maximum_percent;
2429 temporary_zoom_settings_ = !remember; 2492 temporary_zoom_settings_ = !remember ||
2493 current_zoom_mode_ != kZoomModeDefault;
2430 } 2494 }
2431 2495
2432 void WebContentsImpl::OnEnumerateDirectory(int request_id, 2496 void WebContentsImpl::OnEnumerateDirectory(int request_id,
2433 const base::FilePath& path) { 2497 const base::FilePath& path) {
2434 if (!delegate_) 2498 if (!delegate_)
2435 return; 2499 return;
2436 2500
2437 ChildProcessSecurityPolicyImpl* policy = 2501 ChildProcessSecurityPolicyImpl* policy =
2438 ChildProcessSecurityPolicyImpl::GetInstance(); 2502 ChildProcessSecurityPolicyImpl::GetInstance();
2439 if (policy->CanReadFile(GetRenderProcessHost()->GetID(), path)) 2503 if (policy->CanReadFile(GetRenderProcessHost()->GetID(), path))
(...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after
2819 2883
2820 notify_disconnection_ = false; 2884 notify_disconnection_ = false;
2821 NotificationService::current()->Notify( 2885 NotificationService::current()->Notify(
2822 NOTIFICATION_WEB_CONTENTS_DISCONNECTED, 2886 NOTIFICATION_WEB_CONTENTS_DISCONNECTED,
2823 Source<WebContents>(this), 2887 Source<WebContents>(this),
2824 NotificationService::NoDetails()); 2888 NotificationService::NoDetails());
2825 } 2889 }
2826 2890
2827 void WebContentsImpl::NotifyNavigationEntryCommitted( 2891 void WebContentsImpl::NotifyNavigationEntryCommitted(
2828 const LoadCommittedDetails& load_details) { 2892 const LoadCommittedDetails& load_details) {
2893 if (load_details.is_navigation_to_different_page()) {
2894 temporary_zoom_settings_ = false;
2895 SetZoomMode(kZoomModeDefault);
2896 }
2897
2829 FOR_EACH_OBSERVER( 2898 FOR_EACH_OBSERVER(
2830 WebContentsObserver, observers_, NavigationEntryCommitted(load_details)); 2899 WebContentsObserver, observers_, NavigationEntryCommitted(load_details));
2831 } 2900 }
2832 2901
2833 bool WebContentsImpl::OnMessageReceived(RenderFrameHost* render_frame_host, 2902 bool WebContentsImpl::OnMessageReceived(RenderFrameHost* render_frame_host,
2834 const IPC::Message& message) { 2903 const IPC::Message& message) {
2835 return OnMessageReceived(NULL, render_frame_host, message); 2904 return OnMessageReceived(NULL, render_frame_host, message);
2836 } 2905 }
2837 2906
2838 const GURL& WebContentsImpl::GetMainFrameLastCommittedURL() const { 2907 const GURL& WebContentsImpl::GetMainFrameLastCommittedURL() const {
(...skipping 854 matching lines...) Expand 10 before | Expand all | Expand 10 after
3693 3762
3694 void WebContentsImpl::OnPreferredSizeChanged(const gfx::Size& old_size) { 3763 void WebContentsImpl::OnPreferredSizeChanged(const gfx::Size& old_size) {
3695 if (!delegate_) 3764 if (!delegate_)
3696 return; 3765 return;
3697 const gfx::Size new_size = GetPreferredSize(); 3766 const gfx::Size new_size = GetPreferredSize();
3698 if (new_size != old_size) 3767 if (new_size != old_size)
3699 delegate_->UpdatePreferredSize(this, new_size); 3768 delegate_->UpdatePreferredSize(this, new_size);
3700 } 3769 }
3701 3770
3702 } // namespace content 3771 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698