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 #include <utility> | 9 #include <utility> |
10 #include <vector> | 10 #include <vector> |
(...skipping 3332 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
3343 if (frame == main_frame) { | 3343 if (frame == main_frame) { |
3344 // For now, don't remember plugin zoom values. We don't want to mix them | 3344 // For now, don't remember plugin zoom values. We don't want to mix them |
3345 // with normal web content (i.e. a fixed layout plugin would usually want | 3345 // with normal web content (i.e. a fixed layout plugin would usually want |
3346 // them different). | 3346 // them different). |
3347 render_view_->Send(new ViewHostMsg_DocumentAvailableInMainFrame( | 3347 render_view_->Send(new ViewHostMsg_DocumentAvailableInMainFrame( |
3348 render_view_->GetRoutingID(), | 3348 render_view_->GetRoutingID(), |
3349 main_frame->document().isPluginDocument())); | 3349 main_frame->document().isPluginDocument())); |
3350 } | 3350 } |
3351 } | 3351 } |
3352 | 3352 |
3353 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, | 3353 // Notify observers; The frame can be detached by an extension script. |
3354 DidCreateDocumentElement()); | 3354 if (observers_.might_have_observers()) { |
nasko
2016/02/08 18:12:53
Yuck :(. Why is this the only method that needs th
robwu
2016/02/09 01:18:10
This is needed because the observers expect the su
| |
3355 base::WeakPtr<RenderFrameImpl> self = weak_factory_.GetWeakPtr(); | |
3356 base::ObserverListBase<RenderFrameObserver>::Iterator it(&observers_); | |
3357 RenderFrameObserver* obs; | |
3358 while ((obs = it.GetNext()) != nullptr) { | |
3359 obs->DidCreateDocumentElement(); | |
3360 if (!self.get()) | |
3361 return; | |
3362 } | |
3363 } | |
3355 FOR_EACH_OBSERVER(RenderViewObserver, render_view_->observers(), | 3364 FOR_EACH_OBSERVER(RenderViewObserver, render_view_->observers(), |
3356 DidCreateDocumentElement(frame)); | 3365 DidCreateDocumentElement(frame)); |
3357 } | 3366 } |
3358 | 3367 |
3359 void RenderFrameImpl::didReceiveTitle(blink::WebLocalFrame* frame, | 3368 void RenderFrameImpl::didReceiveTitle(blink::WebLocalFrame* frame, |
3360 const blink::WebString& title, | 3369 const blink::WebString& title, |
3361 blink::WebTextDirection direction) { | 3370 blink::WebTextDirection direction) { |
3362 DCHECK(!frame_ || frame_ == frame); | 3371 DCHECK(!frame_ || frame_ == frame); |
3363 // Ignore all but top level navigations. | 3372 // Ignore all but top level navigations. |
3364 if (!frame->parent()) { | 3373 if (!frame->parent()) { |
(...skipping 23 matching lines...) Expand all Loading... | |
3388 "id", routing_id_); | 3397 "id", routing_id_); |
3389 DCHECK(!frame_ || frame_ == frame); | 3398 DCHECK(!frame_ || frame_ == frame); |
3390 WebDataSource* ds = frame->dataSource(); | 3399 WebDataSource* ds = frame->dataSource(); |
3391 DocumentState* document_state = DocumentState::FromDataSource(ds); | 3400 DocumentState* document_state = DocumentState::FromDataSource(ds); |
3392 document_state->set_finish_document_load_time(Time::Now()); | 3401 document_state->set_finish_document_load_time(Time::Now()); |
3393 | 3402 |
3394 Send(new FrameHostMsg_DidFinishDocumentLoad(routing_id_)); | 3403 Send(new FrameHostMsg_DidFinishDocumentLoad(routing_id_)); |
3395 | 3404 |
3396 FOR_EACH_OBSERVER(RenderViewObserver, render_view_->observers(), | 3405 FOR_EACH_OBSERVER(RenderViewObserver, render_view_->observers(), |
3397 DidFinishDocumentLoad(frame)); | 3406 DidFinishDocumentLoad(frame)); |
3398 FOR_EACH_OBSERVER(RenderFrameObserver, observers_, DidFinishDocumentLoad()); | 3407 // Notify observers; The frame can be detached by an extension script. |
3408 if (observers_.might_have_observers()) { | |
3409 base::WeakPtr<RenderFrameImpl> self = weak_factory_.GetWeakPtr(); | |
3410 base::ObserverListBase<RenderFrameObserver>::Iterator it(&observers_); | |
3411 RenderFrameObserver* obs; | |
3412 while ((obs = it.GetNext()) != nullptr) { | |
3413 obs->DidFinishDocumentLoad(); | |
3414 if (!self.get()) | |
3415 return; | |
3416 } | |
3417 } | |
3399 | 3418 |
3400 // Check whether we have new encoding name. | 3419 // Check whether we have new encoding name. |
3401 UpdateEncoding(frame, frame->view()->pageEncoding().utf8()); | 3420 UpdateEncoding(frame, frame->view()->pageEncoding().utf8()); |
3402 | 3421 |
3403 // If this is an empty document with an http status code indicating an error, | 3422 // If this is an empty document with an http status code indicating an error, |
3404 // we may want to display our own error page, so the user doesn't end up | 3423 // we may want to display our own error page, so the user doesn't end up |
3405 // with an unexplained blank page. | 3424 // with an unexplained blank page. |
3406 if (!document_is_empty) | 3425 if (!document_is_empty) |
3407 return; | 3426 return; |
3408 | 3427 |
(...skipping 2699 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
6108 int match_count, | 6127 int match_count, |
6109 int ordinal, | 6128 int ordinal, |
6110 const WebRect& selection_rect, | 6129 const WebRect& selection_rect, |
6111 bool final_status_update) { | 6130 bool final_status_update) { |
6112 Send(new FrameHostMsg_Find_Reply(routing_id_, request_id, match_count, | 6131 Send(new FrameHostMsg_Find_Reply(routing_id_, request_id, match_count, |
6113 selection_rect, ordinal, | 6132 selection_rect, ordinal, |
6114 final_status_update)); | 6133 final_status_update)); |
6115 } | 6134 } |
6116 | 6135 |
6117 } // namespace content | 6136 } // namespace content |
OLD | NEW |