OLD | NEW |
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 Loading... |
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 Loading... |
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 Loading... |
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 |
OLD | NEW |