OLD | NEW |
1 // Copyright 2014 The Chromium Authors. All rights reserved. | 1 // Copyright 2014 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 "extensions/browser/guest_view/web_view/web_view_guest.h" | 5 #include "extensions/browser/guest_view/web_view/web_view_guest.h" |
6 | 6 |
7 #include "base/message_loop/message_loop.h" | 7 #include "base/message_loop/message_loop.h" |
8 #include "base/strings/stringprintf.h" | 8 #include "base/strings/stringprintf.h" |
9 #include "base/strings/utf_string_conversions.h" | 9 #include "base/strings/utf_string_conversions.h" |
10 #include "content/public/browser/browser_context.h" | 10 #include "content/public/browser/browser_context.h" |
(...skipping 17 matching lines...) Expand all Loading... |
28 #include "content/public/common/media_stream_request.h" | 28 #include "content/public/common/media_stream_request.h" |
29 #include "content/public/common/page_zoom.h" | 29 #include "content/public/common/page_zoom.h" |
30 #include "content/public/common/result_codes.h" | 30 #include "content/public/common/result_codes.h" |
31 #include "content/public/common/stop_find_action.h" | 31 #include "content/public/common/stop_find_action.h" |
32 #include "content/public/common/url_constants.h" | 32 #include "content/public/common/url_constants.h" |
33 #include "extensions/browser/api/declarative/rules_registry_service.h" | 33 #include "extensions/browser/api/declarative/rules_registry_service.h" |
34 #include "extensions/browser/api/extensions_api_client.h" | 34 #include "extensions/browser/api/extensions_api_client.h" |
35 #include "extensions/browser/api/guest_view/web_view/web_view_internal_api.h" | 35 #include "extensions/browser/api/guest_view/web_view/web_view_internal_api.h" |
36 #include "extensions/browser/api/web_request/web_request_api.h" | 36 #include "extensions/browser/api/web_request/web_request_api.h" |
37 #include "extensions/browser/extension_system.h" | 37 #include "extensions/browser/extension_system.h" |
| 38 #include "extensions/browser/guest_view/guest_view_event.h" |
38 #include "extensions/browser/guest_view/guest_view_manager.h" | 39 #include "extensions/browser/guest_view/guest_view_manager.h" |
39 #include "extensions/browser/guest_view/web_view/web_view_constants.h" | 40 #include "extensions/browser/guest_view/web_view/web_view_constants.h" |
40 #include "extensions/browser/guest_view/web_view/web_view_permission_helper.h" | 41 #include "extensions/browser/guest_view/web_view/web_view_permission_helper.h" |
41 #include "extensions/browser/guest_view/web_view/web_view_permission_types.h" | 42 #include "extensions/browser/guest_view/web_view/web_view_permission_types.h" |
42 #include "extensions/browser/guest_view/web_view/web_view_renderer_state.h" | 43 #include "extensions/browser/guest_view/web_view/web_view_renderer_state.h" |
43 #include "extensions/common/constants.h" | 44 #include "extensions/common/constants.h" |
44 #include "extensions/common/extension_messages.h" | 45 #include "extensions/common/extension_messages.h" |
45 #include "extensions/common/guest_view/guest_view_constants.h" | 46 #include "extensions/common/guest_view/guest_view_constants.h" |
46 #include "extensions/strings/grit/extensions_strings.h" | 47 #include "extensions/strings/grit/extensions_strings.h" |
47 #include "ipc/ipc_message_macros.h" | 48 #include "ipc/ipc_message_macros.h" |
(...skipping 253 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
301 } | 302 } |
302 | 303 |
303 void WebViewGuest::DidAttachToEmbedder() { | 304 void WebViewGuest::DidAttachToEmbedder() { |
304 ApplyAttributes(*attach_params()); | 305 ApplyAttributes(*attach_params()); |
305 } | 306 } |
306 | 307 |
307 void WebViewGuest::DidDropLink(const GURL& url) { | 308 void WebViewGuest::DidDropLink(const GURL& url) { |
308 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); | 309 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); |
309 args->SetString(guestview::kUrl, url.spec()); | 310 args->SetString(guestview::kUrl, url.spec()); |
310 DispatchEventToView( | 311 DispatchEventToView( |
311 new GuestViewBase::Event(webview::kEventDropLink, args.Pass())); | 312 new GuestViewEvent(this, webview::kEventDropLink, args.Pass())); |
312 } | 313 } |
313 | 314 |
314 void WebViewGuest::DidInitialize(const base::DictionaryValue& create_params) { | 315 void WebViewGuest::DidInitialize(const base::DictionaryValue& create_params) { |
315 script_executor_.reset( | 316 script_executor_.reset( |
316 new ScriptExecutor(web_contents(), &script_observers_)); | 317 new ScriptExecutor(web_contents(), &script_observers_)); |
317 | 318 |
318 notification_registrar_.Add(this, | 319 notification_registrar_.Add(this, |
319 content::NOTIFICATION_LOAD_COMPLETED_MAIN_FRAME, | 320 content::NOTIFICATION_LOAD_COMPLETED_MAIN_FRAME, |
320 content::Source<WebContents>(web_contents())); | 321 content::Source<WebContents>(web_contents())); |
321 | 322 |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
361 partition->ClearData( | 362 partition->ClearData( |
362 storage_partition_removal_mask, | 363 storage_partition_removal_mask, |
363 content::StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL, GURL(), | 364 content::StoragePartition::QUOTA_MANAGED_STORAGE_MASK_ALL, GURL(), |
364 content::StoragePartition::OriginMatcherFunction(), remove_since, | 365 content::StoragePartition::OriginMatcherFunction(), remove_since, |
365 base::Time::Now(), callback); | 366 base::Time::Now(), callback); |
366 } | 367 } |
367 | 368 |
368 void WebViewGuest::GuestViewDidStopLoading() { | 369 void WebViewGuest::GuestViewDidStopLoading() { |
369 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); | 370 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); |
370 DispatchEventToView( | 371 DispatchEventToView( |
371 new GuestViewBase::Event(webview::kEventLoadStop, args.Pass())); | 372 new GuestViewEvent(this, webview::kEventLoadStop, args.Pass())); |
372 } | 373 } |
373 | 374 |
374 void WebViewGuest::EmbedderFullscreenToggled(bool entered_fullscreen) { | 375 void WebViewGuest::EmbedderFullscreenToggled(bool entered_fullscreen) { |
375 is_embedder_fullscreen_ = entered_fullscreen; | 376 is_embedder_fullscreen_ = entered_fullscreen; |
376 // If the embedder has got out of fullscreen, we get out of fullscreen | 377 // If the embedder has got out of fullscreen, we get out of fullscreen |
377 // mode as well. | 378 // mode as well. |
378 if (!entered_fullscreen) | 379 if (!entered_fullscreen) |
379 SetFullscreenState(false); | 380 SetFullscreenState(false); |
380 } | 381 } |
381 | 382 |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
434 } | 435 } |
435 | 436 |
436 void WebViewGuest::GuestSizeChangedDueToAutoSize(const gfx::Size& old_size, | 437 void WebViewGuest::GuestSizeChangedDueToAutoSize(const gfx::Size& old_size, |
437 const gfx::Size& new_size) { | 438 const gfx::Size& new_size) { |
438 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); | 439 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); |
439 args->SetInteger(webview::kOldHeight, old_size.height()); | 440 args->SetInteger(webview::kOldHeight, old_size.height()); |
440 args->SetInteger(webview::kOldWidth, old_size.width()); | 441 args->SetInteger(webview::kOldWidth, old_size.width()); |
441 args->SetInteger(webview::kNewHeight, new_size.height()); | 442 args->SetInteger(webview::kNewHeight, new_size.height()); |
442 args->SetInteger(webview::kNewWidth, new_size.width()); | 443 args->SetInteger(webview::kNewWidth, new_size.width()); |
443 DispatchEventToView( | 444 DispatchEventToView( |
444 new GuestViewBase::Event(webview::kEventSizeChanged, args.Pass())); | 445 new GuestViewEvent(this, webview::kEventSizeChanged, args.Pass())); |
445 } | 446 } |
446 | 447 |
447 bool WebViewGuest::IsAutoSizeSupported() const { | 448 bool WebViewGuest::IsAutoSizeSupported() const { |
448 return true; | 449 return true; |
449 } | 450 } |
450 | 451 |
451 bool WebViewGuest::IsDragAndDropEnabled() const { | 452 bool WebViewGuest::IsDragAndDropEnabled() const { |
452 return true; | 453 return true; |
453 } | 454 } |
454 | 455 |
455 void WebViewGuest::GuestZoomChanged(double old_zoom_level, | 456 void WebViewGuest::GuestZoomChanged(double old_zoom_level, |
456 double new_zoom_level) { | 457 double new_zoom_level) { |
457 // Dispatch the zoomchange event. | 458 // Dispatch the zoomchange event. |
458 double old_zoom_factor = ConvertZoomLevelToZoomFactor(old_zoom_level); | 459 double old_zoom_factor = ConvertZoomLevelToZoomFactor(old_zoom_level); |
459 double new_zoom_factor = ConvertZoomLevelToZoomFactor(new_zoom_level); | 460 double new_zoom_factor = ConvertZoomLevelToZoomFactor(new_zoom_level); |
460 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); | 461 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); |
461 args->SetDouble(webview::kOldZoomFactor, old_zoom_factor); | 462 args->SetDouble(webview::kOldZoomFactor, old_zoom_factor); |
462 args->SetDouble(webview::kNewZoomFactor, new_zoom_factor); | 463 args->SetDouble(webview::kNewZoomFactor, new_zoom_factor); |
463 DispatchEventToView( | 464 DispatchEventToView( |
464 new GuestViewBase::Event(webview::kEventZoomChange, args.Pass())); | 465 new GuestViewEvent(this, webview::kEventZoomChange, args.Pass())); |
465 } | 466 } |
466 | 467 |
467 void WebViewGuest::WillDestroy() { | 468 void WebViewGuest::WillDestroy() { |
468 if (!attached() && GetOpener()) | 469 if (!attached() && GetOpener()) |
469 GetOpener()->pending_new_windows_.erase(this); | 470 GetOpener()->pending_new_windows_.erase(this); |
470 } | 471 } |
471 | 472 |
472 bool WebViewGuest::AddMessageToConsole(WebContents* source, | 473 bool WebViewGuest::AddMessageToConsole(WebContents* source, |
473 int32 level, | 474 int32 level, |
474 const base::string16& message, | 475 const base::string16& message, |
475 int32 line_no, | 476 int32 line_no, |
476 const base::string16& source_id) { | 477 const base::string16& source_id) { |
477 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); | 478 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); |
478 // Log levels are from base/logging.h: LogSeverity. | 479 // Log levels are from base/logging.h: LogSeverity. |
479 args->SetInteger(webview::kLevel, level); | 480 args->SetInteger(webview::kLevel, level); |
480 args->SetString(webview::kMessage, message); | 481 args->SetString(webview::kMessage, message); |
481 args->SetInteger(webview::kLine, line_no); | 482 args->SetInteger(webview::kLine, line_no); |
482 args->SetString(webview::kSourceId, source_id); | 483 args->SetString(webview::kSourceId, source_id); |
483 DispatchEventToView( | 484 DispatchEventToView( |
484 new GuestViewBase::Event(webview::kEventConsoleMessage, args.Pass())); | 485 new GuestViewEvent(this, webview::kEventConsoleMessage, args.Pass())); |
485 return true; | 486 return true; |
486 } | 487 } |
487 | 488 |
488 void WebViewGuest::CloseContents(WebContents* source) { | 489 void WebViewGuest::CloseContents(WebContents* source) { |
489 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); | 490 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); |
490 DispatchEventToView( | 491 DispatchEventToView( |
491 new GuestViewBase::Event(webview::kEventClose, args.Pass())); | 492 new GuestViewEvent(this, webview::kEventClose, args.Pass())); |
492 } | 493 } |
493 | 494 |
494 void WebViewGuest::FindReply(WebContents* source, | 495 void WebViewGuest::FindReply(WebContents* source, |
495 int request_id, | 496 int request_id, |
496 int number_of_matches, | 497 int number_of_matches, |
497 const gfx::Rect& selection_rect, | 498 const gfx::Rect& selection_rect, |
498 int active_match_ordinal, | 499 int active_match_ordinal, |
499 bool final_update) { | 500 bool final_update) { |
500 find_helper_.FindReply(request_id, | 501 find_helper_.FindReply(request_id, |
501 number_of_matches, | 502 number_of_matches, |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
534 const blink::WebGestureEvent& event) { | 535 const blink::WebGestureEvent& event) { |
535 return !allow_scaling_ && GuestViewBase::PreHandleGestureEvent(source, event); | 536 return !allow_scaling_ && GuestViewBase::PreHandleGestureEvent(source, event); |
536 } | 537 } |
537 | 538 |
538 void WebViewGuest::LoadProgressChanged(content::WebContents* source, | 539 void WebViewGuest::LoadProgressChanged(content::WebContents* source, |
539 double progress) { | 540 double progress) { |
540 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); | 541 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); |
541 args->SetString(guestview::kUrl, web_contents()->GetURL().spec()); | 542 args->SetString(guestview::kUrl, web_contents()->GetURL().spec()); |
542 args->SetDouble(webview::kProgress, progress); | 543 args->SetDouble(webview::kProgress, progress); |
543 DispatchEventToView( | 544 DispatchEventToView( |
544 new GuestViewBase::Event(webview::kEventLoadProgress, args.Pass())); | 545 new GuestViewEvent(this, webview::kEventLoadProgress, args.Pass())); |
545 } | 546 } |
546 | 547 |
547 void WebViewGuest::LoadAbort(bool is_top_level, | 548 void WebViewGuest::LoadAbort(bool is_top_level, |
548 const GURL& url, | 549 const GURL& url, |
549 int error_code, | 550 int error_code, |
550 const std::string& error_type) { | 551 const std::string& error_type) { |
551 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); | 552 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); |
552 args->SetBoolean(guestview::kIsTopLevel, is_top_level); | 553 args->SetBoolean(guestview::kIsTopLevel, is_top_level); |
553 args->SetString(guestview::kUrl, url.possibly_invalid_spec()); | 554 args->SetString(guestview::kUrl, url.possibly_invalid_spec()); |
554 args->SetInteger(guestview::kCode, error_code); | 555 args->SetInteger(guestview::kCode, error_code); |
555 args->SetString(guestview::kReason, error_type); | 556 args->SetString(guestview::kReason, error_type); |
556 DispatchEventToView( | 557 DispatchEventToView( |
557 new GuestViewBase::Event(webview::kEventLoadAbort, args.Pass())); | 558 new GuestViewEvent(this, webview::kEventLoadAbort, args.Pass())); |
558 } | 559 } |
559 | 560 |
560 void WebViewGuest::CreateNewGuestWebViewWindow( | 561 void WebViewGuest::CreateNewGuestWebViewWindow( |
561 const content::OpenURLParams& params) { | 562 const content::OpenURLParams& params) { |
562 GuestViewManager* guest_manager = | 563 GuestViewManager* guest_manager = |
563 GuestViewManager::FromBrowserContext(browser_context()); | 564 GuestViewManager::FromBrowserContext(browser_context()); |
564 // Set the attach params to use the same partition as the opener. | 565 // Set the attach params to use the same partition as the opener. |
565 // We pull the partition information from the site's URL, which is of the | 566 // We pull the partition information from the site's URL, which is of the |
566 // form guest://site/{persist}?{partition_name}. | 567 // form guest://site/{persist}?{partition_name}. |
567 const GURL& site_url = web_contents()->GetSiteInstance()->GetSiteURL(); | 568 const GURL& site_url = web_contents()->GetSiteInstance()->GetSiteURL(); |
(...skipping 27 matching lines...) Expand all Loading... |
595 new_guest->web_contents()); | 596 new_guest->web_contents()); |
596 } | 597 } |
597 | 598 |
598 // TODO(fsamuel): Find a reliable way to test the 'responsive' and | 599 // TODO(fsamuel): Find a reliable way to test the 'responsive' and |
599 // 'unresponsive' events. | 600 // 'unresponsive' events. |
600 void WebViewGuest::RendererResponsive(content::WebContents* source) { | 601 void WebViewGuest::RendererResponsive(content::WebContents* source) { |
601 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); | 602 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); |
602 args->SetInteger(webview::kProcessId, | 603 args->SetInteger(webview::kProcessId, |
603 web_contents()->GetRenderProcessHost()->GetID()); | 604 web_contents()->GetRenderProcessHost()->GetID()); |
604 DispatchEventToView( | 605 DispatchEventToView( |
605 new GuestViewBase::Event(webview::kEventResponsive, args.Pass())); | 606 new GuestViewEvent(this, webview::kEventResponsive, args.Pass())); |
606 } | 607 } |
607 | 608 |
608 void WebViewGuest::RendererUnresponsive(content::WebContents* source) { | 609 void WebViewGuest::RendererUnresponsive(content::WebContents* source) { |
609 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); | 610 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); |
610 args->SetInteger(webview::kProcessId, | 611 args->SetInteger(webview::kProcessId, |
611 web_contents()->GetRenderProcessHost()->GetID()); | 612 web_contents()->GetRenderProcessHost()->GetID()); |
612 DispatchEventToView( | 613 DispatchEventToView( |
613 new GuestViewBase::Event(webview::kEventUnresponsive, args.Pass())); | 614 new GuestViewEvent(this, webview::kEventUnresponsive, args.Pass())); |
614 } | 615 } |
615 | 616 |
616 void WebViewGuest::Observe(int type, | 617 void WebViewGuest::Observe(int type, |
617 const content::NotificationSource& source, | 618 const content::NotificationSource& source, |
618 const content::NotificationDetails& details) { | 619 const content::NotificationDetails& details) { |
619 switch (type) { | 620 switch (type) { |
620 case content::NOTIFICATION_LOAD_COMPLETED_MAIN_FRAME: { | 621 case content::NOTIFICATION_LOAD_COMPLETED_MAIN_FRAME: { |
621 DCHECK_EQ(content::Source<WebContents>(source).ptr(), web_contents()); | 622 DCHECK_EQ(content::Source<WebContents>(source).ptr(), web_contents()); |
622 if (content::Source<WebContents>(source).ptr() == web_contents()) | 623 if (content::Source<WebContents>(source).ptr() == web_contents()) |
623 LoadHandlerCalled(); | 624 LoadHandlerCalled(); |
(...skipping 128 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
752 .GetLastCommittedEntry() | 753 .GetLastCommittedEntry() |
753 ->GetBaseURLForDataURL() | 754 ->GetBaseURLForDataURL() |
754 .spec()); | 755 .spec()); |
755 args->SetInteger(webview::kInternalCurrentEntryIndex, | 756 args->SetInteger(webview::kInternalCurrentEntryIndex, |
756 web_contents()->GetController().GetCurrentEntryIndex()); | 757 web_contents()->GetController().GetCurrentEntryIndex()); |
757 args->SetInteger(webview::kInternalEntryCount, | 758 args->SetInteger(webview::kInternalEntryCount, |
758 web_contents()->GetController().GetEntryCount()); | 759 web_contents()->GetController().GetEntryCount()); |
759 args->SetInteger(webview::kInternalProcessId, | 760 args->SetInteger(webview::kInternalProcessId, |
760 web_contents()->GetRenderProcessHost()->GetID()); | 761 web_contents()->GetRenderProcessHost()->GetID()); |
761 DispatchEventToView( | 762 DispatchEventToView( |
762 new GuestViewBase::Event(webview::kEventLoadCommit, args.Pass())); | 763 new GuestViewEvent(this, webview::kEventLoadCommit, args.Pass())); |
763 | 764 |
764 find_helper_.CancelAllFindSessions(); | 765 find_helper_.CancelAllFindSessions(); |
765 | 766 |
766 if (web_view_guest_delegate_) { | 767 if (web_view_guest_delegate_) { |
767 web_view_guest_delegate_->OnDidCommitProvisionalLoadForFrame( | 768 web_view_guest_delegate_->OnDidCommitProvisionalLoadForFrame( |
768 !render_frame_host->GetParent()); | 769 !render_frame_host->GetParent()); |
769 } | 770 } |
770 } | 771 } |
771 | 772 |
772 void WebViewGuest::DidFailProvisionalLoad( | 773 void WebViewGuest::DidFailProvisionalLoad( |
773 content::RenderFrameHost* render_frame_host, | 774 content::RenderFrameHost* render_frame_host, |
774 const GURL& validated_url, | 775 const GURL& validated_url, |
775 int error_code, | 776 int error_code, |
776 const base::string16& error_description) { | 777 const base::string16& error_description) { |
777 LoadAbort(!render_frame_host->GetParent(), validated_url, error_code, | 778 LoadAbort(!render_frame_host->GetParent(), validated_url, error_code, |
778 net::ErrorToShortString(error_code)); | 779 net::ErrorToShortString(error_code)); |
779 } | 780 } |
780 | 781 |
781 void WebViewGuest::DidStartProvisionalLoadForFrame( | 782 void WebViewGuest::DidStartProvisionalLoadForFrame( |
782 content::RenderFrameHost* render_frame_host, | 783 content::RenderFrameHost* render_frame_host, |
783 const GURL& validated_url, | 784 const GURL& validated_url, |
784 bool is_error_page, | 785 bool is_error_page, |
785 bool is_iframe_srcdoc) { | 786 bool is_iframe_srcdoc) { |
786 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); | 787 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); |
787 args->SetString(guestview::kUrl, validated_url.spec()); | 788 args->SetString(guestview::kUrl, validated_url.spec()); |
788 args->SetBoolean(guestview::kIsTopLevel, !render_frame_host->GetParent()); | 789 args->SetBoolean(guestview::kIsTopLevel, !render_frame_host->GetParent()); |
789 DispatchEventToView( | 790 DispatchEventToView( |
790 new GuestViewBase::Event(webview::kEventLoadStart, args.Pass())); | 791 new GuestViewEvent(this, webview::kEventLoadStart, args.Pass())); |
791 } | 792 } |
792 | 793 |
793 void WebViewGuest::DocumentLoadedInFrame( | 794 void WebViewGuest::DocumentLoadedInFrame( |
794 content::RenderFrameHost* render_frame_host) { | 795 content::RenderFrameHost* render_frame_host) { |
795 if (web_view_guest_delegate_) | 796 if (web_view_guest_delegate_) |
796 web_view_guest_delegate_->OnDocumentLoadedInFrame(render_frame_host); | 797 web_view_guest_delegate_->OnDocumentLoadedInFrame(render_frame_host); |
797 } | 798 } |
798 | 799 |
799 void WebViewGuest::RenderProcessGone(base::TerminationStatus status) { | 800 void WebViewGuest::RenderProcessGone(base::TerminationStatus status) { |
800 // Cancel all find sessions in progress. | 801 // Cancel all find sessions in progress. |
801 find_helper_.CancelAllFindSessions(); | 802 find_helper_.CancelAllFindSessions(); |
802 | 803 |
803 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); | 804 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); |
804 args->SetInteger(webview::kProcessId, | 805 args->SetInteger(webview::kProcessId, |
805 web_contents()->GetRenderProcessHost()->GetID()); | 806 web_contents()->GetRenderProcessHost()->GetID()); |
806 args->SetString(webview::kReason, TerminationStatusToString(status)); | 807 args->SetString(webview::kReason, TerminationStatusToString(status)); |
807 DispatchEventToView( | 808 DispatchEventToView( |
808 new GuestViewBase::Event(webview::kEventExit, args.Pass())); | 809 new GuestViewEvent(this, webview::kEventExit, args.Pass())); |
809 } | 810 } |
810 | 811 |
811 void WebViewGuest::UserAgentOverrideSet(const std::string& user_agent) { | 812 void WebViewGuest::UserAgentOverrideSet(const std::string& user_agent) { |
812 content::NavigationController& controller = web_contents()->GetController(); | 813 content::NavigationController& controller = web_contents()->GetController(); |
813 content::NavigationEntry* entry = controller.GetVisibleEntry(); | 814 content::NavigationEntry* entry = controller.GetVisibleEntry(); |
814 if (!entry) | 815 if (!entry) |
815 return; | 816 return; |
816 entry->SetIsOverridingUserAgent(!user_agent.empty()); | 817 entry->SetIsOverridingUserAgent(!user_agent.empty()); |
817 web_contents()->GetController().Reload(false); | 818 web_contents()->GetController().Reload(false); |
818 } | 819 } |
819 | 820 |
820 void WebViewGuest::FrameNameChanged(RenderFrameHost* render_frame_host, | 821 void WebViewGuest::FrameNameChanged(RenderFrameHost* render_frame_host, |
821 const std::string& name) { | 822 const std::string& name) { |
822 if (render_frame_host->GetParent()) | 823 if (render_frame_host->GetParent()) |
823 return; | 824 return; |
824 | 825 |
825 if (name_ == name) | 826 if (name_ == name) |
826 return; | 827 return; |
827 | 828 |
828 ReportFrameNameChange(name); | 829 ReportFrameNameChange(name); |
829 } | 830 } |
830 | 831 |
831 void WebViewGuest::ReportFrameNameChange(const std::string& name) { | 832 void WebViewGuest::ReportFrameNameChange(const std::string& name) { |
832 name_ = name; | 833 name_ = name; |
833 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); | 834 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); |
834 args->SetString(webview::kName, name); | 835 args->SetString(webview::kName, name); |
835 DispatchEventToView( | 836 DispatchEventToView( |
836 new GuestViewBase::Event(webview::kEventFrameNameChanged, args.Pass())); | 837 new GuestViewEvent(this, webview::kEventFrameNameChanged, args.Pass())); |
837 } | 838 } |
838 | 839 |
839 void WebViewGuest::LoadHandlerCalled() { | 840 void WebViewGuest::LoadHandlerCalled() { |
840 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); | 841 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); |
841 DispatchEventToView( | 842 DispatchEventToView( |
842 new GuestViewBase::Event(webview::kEventContentLoad, args.Pass())); | 843 new GuestViewEvent(this, webview::kEventContentLoad, args.Pass())); |
843 } | 844 } |
844 | 845 |
845 void WebViewGuest::LoadRedirect(const GURL& old_url, | 846 void WebViewGuest::LoadRedirect(const GURL& old_url, |
846 const GURL& new_url, | 847 const GURL& new_url, |
847 bool is_top_level) { | 848 bool is_top_level) { |
848 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); | 849 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); |
849 args->SetBoolean(guestview::kIsTopLevel, is_top_level); | 850 args->SetBoolean(guestview::kIsTopLevel, is_top_level); |
850 args->SetString(webview::kNewURL, new_url.spec()); | 851 args->SetString(webview::kNewURL, new_url.spec()); |
851 args->SetString(webview::kOldURL, old_url.spec()); | 852 args->SetString(webview::kOldURL, old_url.spec()); |
852 DispatchEventToView( | 853 DispatchEventToView( |
853 new GuestViewBase::Event(webview::kEventLoadRedirect, args.Pass())); | 854 new GuestViewEvent(this, webview::kEventLoadRedirect, args.Pass())); |
854 } | 855 } |
855 | 856 |
856 void WebViewGuest::PushWebViewStateToIOThread() { | 857 void WebViewGuest::PushWebViewStateToIOThread() { |
857 const GURL& site_url = web_contents()->GetSiteInstance()->GetSiteURL(); | 858 const GURL& site_url = web_contents()->GetSiteInstance()->GetSiteURL(); |
858 std::string partition_domain; | 859 std::string partition_domain; |
859 std::string partition_id; | 860 std::string partition_id; |
860 bool in_memory; | 861 bool in_memory; |
861 if (!GetGuestPartitionConfigForSite( | 862 if (!GetGuestPartitionConfigForSite( |
862 site_url, &partition_domain, &partition_id, &in_memory)) { | 863 site_url, &partition_domain, &partition_id, &in_memory)) { |
863 NOTREACHED(); | 864 NOTREACHED(); |
(...skipping 528 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1392 | 1393 |
1393 bool was_fullscreen = is_guest_fullscreen_; | 1394 bool was_fullscreen = is_guest_fullscreen_; |
1394 is_guest_fullscreen_ = is_fullscreen; | 1395 is_guest_fullscreen_ = is_fullscreen; |
1395 // If the embedder entered fullscreen because of us, it should exit fullscreen | 1396 // If the embedder entered fullscreen because of us, it should exit fullscreen |
1396 // when we exit fullscreen. | 1397 // when we exit fullscreen. |
1397 if (was_fullscreen && GuestMadeEmbedderFullscreen()) { | 1398 if (was_fullscreen && GuestMadeEmbedderFullscreen()) { |
1398 // Dispatch a message so we can call document.webkitCancelFullscreen() | 1399 // Dispatch a message so we can call document.webkitCancelFullscreen() |
1399 // on the embedder. | 1400 // on the embedder. |
1400 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); | 1401 scoped_ptr<base::DictionaryValue> args(new base::DictionaryValue()); |
1401 DispatchEventToView( | 1402 DispatchEventToView( |
1402 new GuestViewBase::Event(webview::kEventExitFullscreen, args.Pass())); | 1403 new GuestViewEvent(this, webview::kEventExitFullscreen, args.Pass())); |
1403 } | 1404 } |
1404 // Since we changed fullscreen state, sending a Resize message ensures that | 1405 // Since we changed fullscreen state, sending a Resize message ensures that |
1405 // renderer/ sees the change. | 1406 // renderer/ sees the change. |
1406 web_contents()->GetRenderViewHost()->WasResized(); | 1407 web_contents()->GetRenderViewHost()->WasResized(); |
1407 } | 1408 } |
1408 | 1409 |
1409 } // namespace extensions | 1410 } // namespace extensions |
OLD | NEW |