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

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

Issue 680193002: Plugin Power Saver: Implement size-based heuristic for peripheral content. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: change mechanism to look at top level navigation instead of renderframe lifecycle Created 6 years, 1 month 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
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 475 matching lines...) Expand 10 before | Expand all | Expand 10 after
486 // stored in render_(view|frame)_message_source_. 486 // stored in render_(view|frame)_message_source_.
487 if (render_frame_host) 487 if (render_frame_host)
488 render_frame_message_source_ = render_frame_host; 488 render_frame_message_source_ = render_frame_host;
489 else 489 else
490 render_view_message_source_ = render_view_host; 490 render_view_message_source_ = render_view_host;
491 491
492 bool handled = true; 492 bool handled = true;
493 IPC_BEGIN_MESSAGE_MAP(WebContentsImpl, message) 493 IPC_BEGIN_MESSAGE_MAP(WebContentsImpl, message)
494 IPC_MESSAGE_HANDLER(FrameHostMsg_PepperPluginHung, OnPepperPluginHung) 494 IPC_MESSAGE_HANDLER(FrameHostMsg_PepperPluginHung, OnPepperPluginHung)
495 IPC_MESSAGE_HANDLER(FrameHostMsg_PluginCrashed, OnPluginCrashed) 495 IPC_MESSAGE_HANDLER(FrameHostMsg_PluginCrashed, OnPluginCrashed)
496 IPC_MESSAGE_HANDLER(FrameHostMsg_PluginContentOriginAllowed,
497 OnPluginContentOriginAllowed)
496 IPC_MESSAGE_HANDLER(FrameHostMsg_DomOperationResponse, 498 IPC_MESSAGE_HANDLER(FrameHostMsg_DomOperationResponse,
497 OnDomOperationResponse) 499 OnDomOperationResponse)
498 IPC_MESSAGE_HANDLER(FrameHostMsg_DidChangeThemeColor, 500 IPC_MESSAGE_HANDLER(FrameHostMsg_DidChangeThemeColor,
499 OnThemeColorChanged) 501 OnThemeColorChanged)
500 IPC_MESSAGE_HANDLER(FrameHostMsg_DidFinishDocumentLoad, 502 IPC_MESSAGE_HANDLER(FrameHostMsg_DidFinishDocumentLoad,
501 OnDocumentLoadedInFrame) 503 OnDocumentLoadedInFrame)
502 IPC_MESSAGE_HANDLER(FrameHostMsg_DidFinishLoad, OnDidFinishLoad) 504 IPC_MESSAGE_HANDLER(FrameHostMsg_DidFinishLoad, OnDidFinishLoad)
503 IPC_MESSAGE_HANDLER(FrameHostMsg_DidStartLoading, OnDidStartLoading) 505 IPC_MESSAGE_HANDLER(FrameHostMsg_DidStartLoading, OnDidStartLoading)
504 IPC_MESSAGE_HANDLER(FrameHostMsg_DidStopLoading, OnDidStopLoading) 506 IPC_MESSAGE_HANDLER(FrameHostMsg_DidStopLoading, OnDidStopLoading)
505 IPC_MESSAGE_HANDLER(FrameHostMsg_DidChangeLoadProgress, 507 IPC_MESSAGE_HANDLER(FrameHostMsg_DidChangeLoadProgress,
(...skipping 2055 matching lines...) Expand 10 before | Expand all | Expand 10 after
2561 const LoadCommittedDetails& details, 2563 const LoadCommittedDetails& details,
2562 const FrameHostMsg_DidCommitProvisionalLoad_Params& params) { 2564 const FrameHostMsg_DidCommitProvisionalLoad_Params& params) {
2563 if (details.is_navigation_to_different_page()) { 2565 if (details.is_navigation_to_different_page()) {
2564 // Clear the status bubble. This is a workaround for a bug where WebKit 2566 // Clear the status bubble. This is a workaround for a bug where WebKit
2565 // doesn't let us know that the cursor left an element during a 2567 // doesn't let us know that the cursor left an element during a
2566 // transition (this is also why the mouse cursor remains as a hand after 2568 // transition (this is also why the mouse cursor remains as a hand after
2567 // clicking on a link); see bugs 1184641 and 980803. We don't want to 2569 // clicking on a link); see bugs 1184641 and 980803. We don't want to
2568 // clear the bubble when a user navigates to a named anchor in the same 2570 // clear the bubble when a user navigates to a named anchor in the same
2569 // page. 2571 // page.
2570 UpdateTargetURL(GURL()); 2572 UpdateTargetURL(GURL());
2573
2574 // Clear the tab-wide origin whitelist. We expect RenderFrames to clear
2575 // their replicated origin whitelist independently.
2576 plugin_content_origin_whitelist_.clear();
2571 } 2577 }
2572 2578
2573 if (!details.is_in_page) { 2579 if (!details.is_in_page) {
2574 // Once the main frame is navigated, we're no longer considered to have 2580 // Once the main frame is navigated, we're no longer considered to have
2575 // displayed insecure content. 2581 // displayed insecure content.
2576 displayed_insecure_content_ = false; 2582 displayed_insecure_content_ = false;
2577 SSLManager::NotifySSLInternalStateChanged( 2583 SSLManager::NotifySSLInternalStateChanged(
2578 GetController().GetBrowserContext()); 2584 GetController().GetBrowserContext());
2579 } 2585 }
2580 2586
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
2892 FOR_EACH_OBSERVER(WebContentsObserver, observers_, 2898 FOR_EACH_OBSERVER(WebContentsObserver, observers_,
2893 PluginHungStatusChanged(plugin_child_id, path, is_hung)); 2899 PluginHungStatusChanged(plugin_child_id, path, is_hung));
2894 } 2900 }
2895 2901
2896 void WebContentsImpl::OnPluginCrashed(const base::FilePath& plugin_path, 2902 void WebContentsImpl::OnPluginCrashed(const base::FilePath& plugin_path,
2897 base::ProcessId plugin_pid) { 2903 base::ProcessId plugin_pid) {
2898 FOR_EACH_OBSERVER(WebContentsObserver, observers_, 2904 FOR_EACH_OBSERVER(WebContentsObserver, observers_,
2899 PluginCrashed(plugin_path, plugin_pid)); 2905 PluginCrashed(plugin_path, plugin_pid));
2900 } 2906 }
2901 2907
2908 void WebContentsImpl::OnPluginContentOriginAllowed(const GURL& content_origin) {
2909 DCHECK(render_frame_message_source_);
2910 DCHECK(!render_view_message_source_);
2911
2912 plugin_content_origin_whitelist_.insert(content_origin);
2913
2914 SendToAllFrames(new FrameMsg_UpdatePluginContentOriginWhitelist(
2915 MSG_ROUTING_NONE, plugin_content_origin_whitelist_));
2916 }
2917
2902 void WebContentsImpl::OnDomOperationResponse(const std::string& json_string, 2918 void WebContentsImpl::OnDomOperationResponse(const std::string& json_string,
2903 int automation_id) { 2919 int automation_id) {
2904 DomOperationNotificationDetails details(json_string, automation_id); 2920 DomOperationNotificationDetails details(json_string, automation_id);
2905 NotificationService::current()->Notify( 2921 NotificationService::current()->Notify(
2906 NOTIFICATION_DOM_OPERATION_RESPONSE, 2922 NOTIFICATION_DOM_OPERATION_RESPONSE,
2907 Source<WebContents>(this), 2923 Source<WebContents>(this),
2908 Details<DomOperationNotificationDetails>(&details)); 2924 Details<DomOperationNotificationDetails>(&details));
2909 } 2925 }
2910 2926
2911 void WebContentsImpl::OnAppCacheAccessed(const GURL& manifest_url, 2927 void WebContentsImpl::OnAppCacheAccessed(const GURL& manifest_url,
(...skipping 413 matching lines...) Expand 10 before | Expand all | Expand 10 after
3325 return GetLastCommittedURL(); 3341 return GetLastCommittedURL();
3326 } 3342 }
3327 3343
3328 void WebContentsImpl::RenderFrameCreated(RenderFrameHost* render_frame_host) { 3344 void WebContentsImpl::RenderFrameCreated(RenderFrameHost* render_frame_host) {
3329 // Note this is only for subframes, the notification for the main frame 3345 // Note this is only for subframes, the notification for the main frame
3330 // happens in RenderViewCreated. 3346 // happens in RenderViewCreated.
3331 FOR_EACH_OBSERVER(WebContentsObserver, 3347 FOR_EACH_OBSERVER(WebContentsObserver,
3332 observers_, 3348 observers_,
3333 RenderFrameCreated(render_frame_host)); 3349 RenderFrameCreated(render_frame_host));
3334 SetAccessibilityModeOnFrame(accessibility_mode_, render_frame_host); 3350 SetAccessibilityModeOnFrame(accessibility_mode_, render_frame_host);
3351
3352 if (!plugin_content_origin_whitelist_.empty()) {
3353 Send(new FrameMsg_UpdatePluginContentOriginWhitelist(
3354 render_frame_host->GetRoutingID(), plugin_content_origin_whitelist_));
3355 }
3335 } 3356 }
3336 3357
3337 void WebContentsImpl::RenderFrameDeleted(RenderFrameHost* render_frame_host) { 3358 void WebContentsImpl::RenderFrameDeleted(RenderFrameHost* render_frame_host) {
3338 ClearPowerSaveBlockers(render_frame_host); 3359 ClearPowerSaveBlockers(render_frame_host);
3360
3339 FOR_EACH_OBSERVER(WebContentsObserver, 3361 FOR_EACH_OBSERVER(WebContentsObserver,
3340 observers_, 3362 observers_,
3341 RenderFrameDeleted(render_frame_host)); 3363 RenderFrameDeleted(render_frame_host));
3342 } 3364 }
3343 3365
3344 void WebContentsImpl::WorkerCrashed(RenderFrameHost* render_frame_host) { 3366 void WebContentsImpl::WorkerCrashed(RenderFrameHost* render_frame_host) {
3345 if (delegate_) 3367 if (delegate_)
3346 delegate_->WorkerCrashed(this); 3368 delegate_->WorkerCrashed(this);
3347 } 3369 }
3348 3370
(...skipping 976 matching lines...) Expand 10 before | Expand all | Expand 10 after
4325 node->render_manager()->ResumeResponseDeferredAtStart(); 4347 node->render_manager()->ResumeResponseDeferredAtStart();
4326 } 4348 }
4327 4349
4328 void WebContentsImpl::SetForceDisableOverscrollContent(bool force_disable) { 4350 void WebContentsImpl::SetForceDisableOverscrollContent(bool force_disable) {
4329 force_disable_overscroll_content_ = force_disable; 4351 force_disable_overscroll_content_ = force_disable;
4330 if (view_) 4352 if (view_)
4331 view_->SetOverscrollControllerEnabled(CanOverscrollContent()); 4353 view_->SetOverscrollControllerEnabled(CanOverscrollContent());
4332 } 4354 }
4333 4355
4334 } // namespace content 4356 } // namespace content
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698