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

Side by Side Diff: content/browser/frame_host/interstitial_page_impl.cc

Issue 157713002: Switch DomAutomationController to be a RenderFrameObserver. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 6 years, 10 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 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/browser/frame_host/interstitial_page_impl.h" 5 #include "content/browser/frame_host/interstitial_page_impl.h"
6 6
7 #include <vector> 7 #include <vector>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/compiler_specific.h" 10 #include "base/compiler_specific.h"
(...skipping 19 matching lines...) Expand all
30 #include "content/port/browser/web_contents_view_port.h" 30 #include "content/port/browser/web_contents_view_port.h"
31 #include "content/public/browser/browser_context.h" 31 #include "content/public/browser/browser_context.h"
32 #include "content/public/browser/browser_thread.h" 32 #include "content/public/browser/browser_thread.h"
33 #include "content/public/browser/content_browser_client.h" 33 #include "content/public/browser/content_browser_client.h"
34 #include "content/public/browser/dom_operation_notification_details.h" 34 #include "content/public/browser/dom_operation_notification_details.h"
35 #include "content/public/browser/interstitial_page_delegate.h" 35 #include "content/public/browser/interstitial_page_delegate.h"
36 #include "content/public/browser/invalidate_type.h" 36 #include "content/public/browser/invalidate_type.h"
37 #include "content/public/browser/notification_service.h" 37 #include "content/public/browser/notification_service.h"
38 #include "content/public/browser/notification_source.h" 38 #include "content/public/browser/notification_source.h"
39 #include "content/public/browser/storage_partition.h" 39 #include "content/public/browser/storage_partition.h"
40 #include "content/public/browser/user_metrics.h"
40 #include "content/public/browser/web_contents_delegate.h" 41 #include "content/public/browser/web_contents_delegate.h"
41 #include "content/public/common/bindings_policy.h" 42 #include "content/public/common/bindings_policy.h"
42 #include "content/public/common/page_transition_types.h" 43 #include "content/public/common/page_transition_types.h"
43 #include "net/base/escape.h" 44 #include "net/base/escape.h"
44 #include "net/url_request/url_request_context_getter.h" 45 #include "net/url_request/url_request_context_getter.h"
45 46
46 using blink::WebDragOperation; 47 using blink::WebDragOperation;
47 using blink::WebDragOperationsMask; 48 using blink::WebDragOperationsMask;
48 49
49 namespace content { 50 namespace content {
(...skipping 192 matching lines...) Expand 10 before | Expand all | Expand 10 after
242 render_view_host_ = static_cast<RenderViewHostImpl*>(CreateRenderViewHost()); 243 render_view_host_ = static_cast<RenderViewHostImpl*>(CreateRenderViewHost());
243 render_view_host_->AttachToFrameTree(); 244 render_view_host_->AttachToFrameTree();
244 CreateWebContentsView(); 245 CreateWebContentsView();
245 246
246 std::string data_url = "data:text/html;charset=utf-8," + 247 std::string data_url = "data:text/html;charset=utf-8," +
247 net::EscapePath(delegate_->GetHTMLContents()); 248 net::EscapePath(delegate_->GetHTMLContents());
248 render_view_host_->NavigateToURL(GURL(data_url)); 249 render_view_host_->NavigateToURL(GURL(data_url));
249 250
250 notification_registrar_.Add(this, NOTIFICATION_NAV_ENTRY_PENDING, 251 notification_registrar_.Add(this, NOTIFICATION_NAV_ENTRY_PENDING,
251 Source<NavigationController>(controller_)); 252 Source<NavigationController>(controller_));
252 notification_registrar_.Add(
253 this, NOTIFICATION_DOM_OPERATION_RESPONSE,
254 Source<RenderViewHost>(render_view_host_));
255 } 253 }
256 254
257 void InterstitialPageImpl::Hide() { 255 void InterstitialPageImpl::Hide() {
258 // We may have already been hidden, and are just waiting to be deleted. 256 // We may have already been hidden, and are just waiting to be deleted.
259 // We can't check for enabled() here, because some callers have already 257 // We can't check for enabled() here, because some callers have already
260 // called Disable. 258 // called Disable.
261 if (!render_view_host_) 259 if (!render_view_host_)
262 return; 260 return;
263 261
264 Disable(); 262 Disable();
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after
339 // closed); make sure we clear the blocked requests. 337 // closed); make sure we clear the blocked requests.
340 RenderViewHost* rvh = static_cast<RenderViewHost*>( 338 RenderViewHost* rvh = static_cast<RenderViewHost*>(
341 static_cast<RenderViewHostImpl*>( 339 static_cast<RenderViewHostImpl*>(
342 RenderWidgetHostImpl::From( 340 RenderWidgetHostImpl::From(
343 Source<RenderWidgetHost>(source).ptr()))); 341 Source<RenderWidgetHost>(source).ptr())));
344 DCHECK(rvh->GetProcess()->GetID() == original_child_id_ && 342 DCHECK(rvh->GetProcess()->GetID() == original_child_id_ &&
345 rvh->GetRoutingID() == original_rvh_id_); 343 rvh->GetRoutingID() == original_rvh_id_);
346 TakeActionOnResourceDispatcher(CANCEL); 344 TakeActionOnResourceDispatcher(CANCEL);
347 } 345 }
348 break; 346 break;
349 case NOTIFICATION_DOM_OPERATION_RESPONSE:
350 if (enabled()) {
351 Details<DomOperationNotificationDetails> dom_op_details(
352 details);
353 delegate_->CommandReceived(dom_op_details->json);
354 }
355 break;
356 default: 347 default:
357 NOTREACHED(); 348 NOTREACHED();
358 } 349 }
359 } 350 }
360 351
361 void InterstitialPageImpl::NavigationEntryCommitted( 352 void InterstitialPageImpl::NavigationEntryCommitted(
362 const LoadCommittedDetails& load_details) { 353 const LoadCommittedDetails& load_details) {
363 OnNavigatingAwayOrTabClosing(); 354 OnNavigatingAwayOrTabClosing();
364 } 355 }
365 356
366 void InterstitialPageImpl::WebContentsDestroyed(WebContents* web_contents) { 357 void InterstitialPageImpl::WebContentsDestroyed(WebContents* web_contents) {
367 OnNavigatingAwayOrTabClosing(); 358 OnNavigatingAwayOrTabClosing();
368 } 359 }
369 360
361 bool InterstitialPageImpl::OnMessageReceived(RenderFrameHost* render_frame_host,
362 const IPC::Message& message) {
363 return OnMessageReceived(message);
364 }
365
366 bool InterstitialPageImpl::OnMessageReceived(RenderViewHost* render_view_host,
367 const IPC::Message& message) {
368 return OnMessageReceived(message);
369 }
370
371 bool InterstitialPageImpl::OnMessageReceived(const IPC::Message& message) {
372
373 bool handled = true;
374 bool message_is_ok = true;
375 IPC_BEGIN_MESSAGE_MAP_EX(InterstitialPageImpl, message, message_is_ok)
376 IPC_MESSAGE_HANDLER(FrameHostMsg_DomOperationResponse,
377 OnDomOperationResponse)
378 IPC_MESSAGE_UNHANDLED(handled = false)
379 IPC_END_MESSAGE_MAP_EX()
380
381 if (!message_is_ok) {
382 RecordAction(base::UserMetricsAction("BadMessageTerminate_RVD"));
383 web_contents()->GetRenderProcessHost()->ReceivedBadMessage();
384 }
385
386 return handled;
387 }
388
370 void InterstitialPageImpl::RenderFrameCreated( 389 void InterstitialPageImpl::RenderFrameCreated(
371 RenderFrameHost* render_frame_host) { 390 RenderFrameHost* render_frame_host) {
372 // Note this is only for subframes in the interstitial, the notification for 391 // Note this is only for subframes in the interstitial, the notification for
373 // the main frame happens in RenderViewCreated. 392 // the main frame happens in RenderViewCreated.
374 controller_->delegate()->RenderFrameForInterstitialPageCreated( 393 controller_->delegate()->RenderFrameForInterstitialPageCreated(
375 render_frame_host); 394 render_frame_host);
376 } 395 }
377 396
378 RenderViewHostDelegateView* InterstitialPageImpl::GetDelegateView() { 397 RenderViewHostDelegateView* InterstitialPageImpl::GetDelegateView() {
379 return rvh_delegate_view_.get(); 398 return rvh_delegate_view_.get();
(...skipping 419 matching lines...) Expand 10 before | Expand all | Expand 10 after
799 BrowserThread::IO, 818 BrowserThread::IO,
800 FROM_HERE, 819 FROM_HERE,
801 base::Bind( 820 base::Bind(
802 &ResourceRequestHelper, 821 &ResourceRequestHelper,
803 ResourceDispatcherHostImpl::Get(), 822 ResourceDispatcherHostImpl::Get(),
804 original_child_id_, 823 original_child_id_,
805 original_rvh_id_, 824 original_rvh_id_,
806 action)); 825 action));
807 } 826 }
808 827
828 void InterstitialPageImpl::OnDomOperationResponse(
829 const std::string& json_string,
830 int automation_id) {
831 // Needed by test code.
832 DomOperationNotificationDetails details(json_string, automation_id);
833 NotificationService::current()->Notify(
834 NOTIFICATION_DOM_OPERATION_RESPONSE,
835 Source<WebContents>(web_contents()),
836 Details<DomOperationNotificationDetails>(&details));
837
838 if (!enabled())
839 return;
840 delegate_->CommandReceived(details.json);
841 }
842
843
809 InterstitialPageImpl::InterstitialPageRVHDelegateView:: 844 InterstitialPageImpl::InterstitialPageRVHDelegateView::
810 InterstitialPageRVHDelegateView(InterstitialPageImpl* page) 845 InterstitialPageRVHDelegateView(InterstitialPageImpl* page)
811 : interstitial_page_(page) { 846 : interstitial_page_(page) {
812 } 847 }
813 848
814 void InterstitialPageImpl::InterstitialPageRVHDelegateView::ShowPopupMenu( 849 void InterstitialPageImpl::InterstitialPageRVHDelegateView::ShowPopupMenu(
815 const gfx::Rect& bounds, 850 const gfx::Rect& bounds,
816 int item_height, 851 int item_height,
817 double item_font_size, 852 double item_font_size,
818 int selected_item, 853 int selected_item,
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after
853 888
854 web_contents->GetDelegateView()->TakeFocus(reverse); 889 web_contents->GetDelegateView()->TakeFocus(reverse);
855 } 890 }
856 891
857 void InterstitialPageImpl::InterstitialPageRVHDelegateView::OnFindReply( 892 void InterstitialPageImpl::InterstitialPageRVHDelegateView::OnFindReply(
858 int request_id, int number_of_matches, const gfx::Rect& selection_rect, 893 int request_id, int number_of_matches, const gfx::Rect& selection_rect,
859 int active_match_ordinal, bool final_update) { 894 int active_match_ordinal, bool final_update) {
860 } 895 }
861 896
862 } // namespace content 897 } // namespace content
OLDNEW
« no previous file with comments | « content/browser/frame_host/interstitial_page_impl.h ('k') | content/browser/renderer_host/render_view_host_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698