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

Side by Side Diff: content/renderer/render_frame_impl.cc

Issue 180113003: Prepare for per frame did{Start,Stop}Loading calls (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 9 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
« no previous file with comments | « content/renderer/render_frame_impl.h ('k') | content/renderer/render_view_browsertest.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2013 The Chromium Authors. All rights reserved. 1 // Copyright 2013 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/renderer/render_frame_impl.h" 5 #include "content/renderer/render_frame_impl.h"
6 6
7 #include <map> 7 #include <map>
8 #include <string> 8 #include <string>
9 9
10 #include "base/auto_reset.h" 10 #include "base/auto_reset.h"
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
291 RenderFrameImpl* (*create_render_frame_impl)(RenderViewImpl*, int32)) { 291 RenderFrameImpl* (*create_render_frame_impl)(RenderViewImpl*, int32)) {
292 CHECK(!g_create_render_frame_impl); 292 CHECK(!g_create_render_frame_impl);
293 g_create_render_frame_impl = create_render_frame_impl; 293 g_create_render_frame_impl = create_render_frame_impl;
294 } 294 }
295 295
296 // RenderFrameImpl ---------------------------------------------------------- 296 // RenderFrameImpl ----------------------------------------------------------
297 RenderFrameImpl::RenderFrameImpl(RenderViewImpl* render_view, int routing_id) 297 RenderFrameImpl::RenderFrameImpl(RenderViewImpl* render_view, int routing_id)
298 : frame_(NULL), 298 : frame_(NULL),
299 render_view_(render_view->AsWeakPtr()), 299 render_view_(render_view->AsWeakPtr()),
300 routing_id_(routing_id), 300 routing_id_(routing_id),
301 is_loading_(false),
301 is_swapped_out_(false), 302 is_swapped_out_(false),
302 is_detaching_(false), 303 is_detaching_(false),
303 cookie_jar_(this) { 304 cookie_jar_(this) {
304 RenderThread::Get()->AddRoute(routing_id_, this); 305 RenderThread::Get()->AddRoute(routing_id_, this);
305 } 306 }
306 307
307 RenderFrameImpl::~RenderFrameImpl() { 308 RenderFrameImpl::~RenderFrameImpl() {
308 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, RenderFrameGone()); 309 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, RenderFrameGone());
309 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, OnDestruct()); 310 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, OnDestruct());
310 RenderThread::Get()->RemoveRoute(routing_id_); 311 RenderThread::Get()->RemoveRoute(routing_id_);
(...skipping 2112 matching lines...) Expand 10 before | Expand all | Expand 10 after
2423 } 2424 }
2424 2425
2425 WebElement RenderFrameImpl::GetFocusedElement() { 2426 WebElement RenderFrameImpl::GetFocusedElement() {
2426 WebDocument doc = frame_->document(); 2427 WebDocument doc = frame_->document();
2427 if (!doc.isNull()) 2428 if (!doc.isNull())
2428 return doc.focusedElement(); 2429 return doc.focusedElement();
2429 2430
2430 return WebElement(); 2431 return WebElement();
2431 } 2432 }
2432 2433
2433 void RenderFrameImpl::didStartLoading() { 2434 void RenderFrameImpl::didStartLoading(bool to_different_document) {
2435 if (is_loading_) {
2436 DVLOG(1) << "didStartLoading called while loading";
2437 return;
2438 }
2439
2440 is_loading_ = true;
2441
2442 render_view_->didStartLoading(frame_);
2443
2434 Send(new FrameHostMsg_DidStartLoading(routing_id_)); 2444 Send(new FrameHostMsg_DidStartLoading(routing_id_));
2435 } 2445 }
2436 2446
2437 void RenderFrameImpl::didStopLoading() { 2447 void RenderFrameImpl::didStopLoading() {
2448 if (!is_loading_) {
2449 DVLOG(1) << "DidStopLoading called while not loading";
2450 return;
2451 }
2452
2453 is_loading_ = false;
2454
2455 render_view_->didStopLoading(frame_);
2456
2457 // NOTE: For now we're doing the safest thing, and sending out notification
2458 // when done loading. This currently isn't an issue as the favicon is only
2459 // displayed when done loading. Ideally we would send notification when
2460 // finished parsing the head, but webkit doesn't support that yet.
2461 // The feed discovery code would also benefit from access to the head.
2462 // NOTE: Sending of the IPC message happens through the top-level frame.
2438 Send(new FrameHostMsg_DidStopLoading(routing_id_)); 2463 Send(new FrameHostMsg_DidStopLoading(routing_id_));
2439 } 2464 }
2440 2465
2441 WebNavigationPolicy RenderFrameImpl::DecidePolicyForNavigation( 2466 WebNavigationPolicy RenderFrameImpl::DecidePolicyForNavigation(
2442 RenderFrame* render_frame, 2467 RenderFrame* render_frame,
2443 WebFrame* frame, 2468 WebFrame* frame,
2444 WebDataSource::ExtraData* extraData, 2469 WebDataSource::ExtraData* extraData,
2445 const WebURLRequest& request, 2470 const WebURLRequest& request,
2446 WebNavigationType type, 2471 WebNavigationType type,
2447 WebNavigationPolicy default_policy, 2472 WebNavigationPolicy default_policy,
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after
2688 if (policy == blink::WebNavigationPolicyNewBackgroundTab || 2713 if (policy == blink::WebNavigationPolicyNewBackgroundTab ||
2689 policy == blink::WebNavigationPolicyNewForegroundTab || 2714 policy == blink::WebNavigationPolicyNewForegroundTab ||
2690 policy == blink::WebNavigationPolicyNewWindow || 2715 policy == blink::WebNavigationPolicyNewWindow ||
2691 policy == blink::WebNavigationPolicyNewPopup) { 2716 policy == blink::WebNavigationPolicyNewPopup) {
2692 WebUserGestureIndicator::consumeUserGesture(); 2717 WebUserGestureIndicator::consumeUserGesture();
2693 } 2718 }
2694 2719
2695 Send(new FrameHostMsg_OpenURL(routing_id_, params)); 2720 Send(new FrameHostMsg_OpenURL(routing_id_, params));
2696 } 2721 }
2697 2722
2723 void RenderFrameImpl::didChangeLoadProgress(double load_progress) {
2724 render_view_->didChangeLoadProgress(frame_, load_progress);
2725 }
2726
2698 } // namespace content 2727 } // namespace content
OLDNEW
« no previous file with comments | « content/renderer/render_frame_impl.h ('k') | content/renderer/render_view_browsertest.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698