| Index: extensions/browser/guest_view/guest_view_base.cc
|
| diff --git a/extensions/browser/guest_view/guest_view_base.cc b/extensions/browser/guest_view/guest_view_base.cc
|
| index 015a314457a7843f443925f6baf1374ba79dda62..2a90eb275c218f7cffaa05d5031471be7fc61175 100644
|
| --- a/extensions/browser/guest_view/guest_view_base.cc
|
| +++ b/extensions/browser/guest_view/guest_view_base.cc
|
| @@ -16,20 +16,14 @@
|
| #include "content/public/browser/web_contents.h"
|
| #include "content/public/common/page_zoom.h"
|
| #include "content/public/common/url_constants.h"
|
| -#include "extensions/browser/api/extensions_api_client.h"
|
| -#include "extensions/browser/event_router.h"
|
| -#include "extensions/browser/extension_registry.h"
|
| #include "extensions/browser/guest_view/app_view/app_view_guest.h"
|
| #include "extensions/browser/guest_view/extension_options/extension_options_guest.h"
|
| #include "extensions/browser/guest_view/extension_view/extension_view_guest.h"
|
| +#include "extensions/browser/guest_view/guest_view_event.h"
|
| #include "extensions/browser/guest_view/guest_view_manager.h"
|
| #include "extensions/browser/guest_view/mime_handler_view/mime_handler_view_guest.h"
|
| #include "extensions/browser/guest_view/surface_worker/surface_worker_guest.h"
|
| #include "extensions/browser/guest_view/web_view/web_view_guest.h"
|
| -#include "extensions/browser/process_manager.h"
|
| -#include "extensions/browser/process_map.h"
|
| -#include "extensions/common/features/feature.h"
|
| -#include "extensions/common/features/feature_provider.h"
|
| #include "extensions/common/guest_view/guest_view_constants.h"
|
| #include "extensions/common/guest_view/guest_view_messages.h"
|
| #include "third_party/WebKit/public/web/WebInputEvent.h"
|
| @@ -60,18 +54,6 @@ SetSizeParams::SetSizeParams() {
|
| SetSizeParams::~SetSizeParams() {
|
| }
|
|
|
| -GuestViewBase::Event::Event(const std::string& name,
|
| - scoped_ptr<base::DictionaryValue> args)
|
| - : name_(name), args_(args.Pass()) {
|
| -}
|
| -
|
| -GuestViewBase::Event::~Event() {
|
| -}
|
| -
|
| -scoped_ptr<base::DictionaryValue> GuestViewBase::Event::GetArguments() {
|
| - return args_.Pass();
|
| -}
|
| -
|
| // This observer ensures that the GuestViewBase destroys itself when its
|
| // embedder goes away. It also tracks when the embedder's fullscreen is
|
| // toggled so the guest can change itself accordingly.
|
| @@ -194,25 +176,8 @@ void GuestViewBase::Init(const base::DictionaryValue& create_params,
|
| return;
|
| initialized_ = true;
|
|
|
| - const Feature* feature = FeatureProvider::GetAPIFeature(GetAPINamespace());
|
| - CHECK(feature);
|
| -
|
| - ProcessMap* process_map = ProcessMap::Get(browser_context());
|
| - CHECK(process_map);
|
| -
|
| - const Extension* owner_extension =
|
| - ProcessManager::Get(owner_web_contents()->GetBrowserContext())->
|
| - GetExtensionForWebContents(owner_web_contents());
|
| - owner_extension_id_ = owner_extension ? owner_extension->id() : std::string();
|
| -
|
| - // Ok for |owner_extension| to be nullptr, the embedder might be WebUI.
|
| - Feature::Availability availability = feature->IsAvailableToContext(
|
| - owner_extension,
|
| - process_map->GetMostLikelyContextType(
|
| - owner_extension,
|
| - owner_web_contents()->GetRenderProcessHost()->GetID()),
|
| - GetOwnerSiteURL());
|
| - if (!availability.is_available()) {
|
| + if (!GuestViewManager::FromBrowserContext(browser_context_)->
|
| + IsGuestAvailableToContext(this, &owner_extension_id_)) {
|
| // The derived class did not create a WebContents so this class serves no
|
| // purpose. Let's self-destruct.
|
| delete this;
|
| @@ -292,7 +257,8 @@ void GuestViewBase::DispatchOnResizeEvent(const gfx::Size& old_size,
|
| args->SetInteger(guestview::kOldHeight, old_size.height());
|
| args->SetInteger(guestview::kNewWidth, new_size.width());
|
| args->SetInteger(guestview::kNewHeight, new_size.height());
|
| - DispatchEventToGuestProxy(new Event(guestview::kEventResize, args.Pass()));
|
| + DispatchEventToGuestProxy(
|
| + new GuestViewEvent(guestview::kEventResize, args.Pass()));
|
| }
|
|
|
| gfx::Size GuestViewBase::GetDefaultSize() const {
|
| @@ -738,45 +704,27 @@ void GuestViewBase::OnZoomChanged(
|
| }
|
| }
|
|
|
| -void GuestViewBase::DispatchEventToGuestProxy(Event* event) {
|
| - DispatchEvent(event, guest_instance_id_);
|
| +void GuestViewBase::DispatchEventToGuestProxy(GuestViewEvent* event) {
|
| + event->Dispatch(this, guest_instance_id_);
|
| }
|
|
|
| -void GuestViewBase::DispatchEventToView(Event* event) {
|
| +void GuestViewBase::DispatchEventToView(GuestViewEvent* event) {
|
| if (!attached() &&
|
| (!CanRunInDetachedState() || !can_owner_receive_events())) {
|
| - pending_events_.push_back(linked_ptr<Event>(event));
|
| + pending_events_.push_back(linked_ptr<GuestViewEvent>(event));
|
| return;
|
| }
|
|
|
| - DispatchEvent(event, view_instance_id_);
|
| -}
|
| -
|
| -void GuestViewBase::DispatchEvent(Event* event, int instance_id) {
|
| - scoped_ptr<Event> event_ptr(event);
|
| -
|
| - EventFilteringInfo info;
|
| - info.SetInstanceID(instance_id);
|
| - scoped_ptr<base::ListValue> args(new base::ListValue());
|
| - args->Append(event->GetArguments().release());
|
| -
|
| - EventRouter::DispatchEvent(
|
| - owner_web_contents_,
|
| - browser_context_,
|
| - owner_extension_id_,
|
| - event->name(),
|
| - args.Pass(),
|
| - EventRouter::USER_GESTURE_UNKNOWN,
|
| - info);
|
| + event->Dispatch(this, view_instance_id_);
|
| }
|
|
|
| void GuestViewBase::SendQueuedEvents() {
|
| if (!attached())
|
| return;
|
| while (!pending_events_.empty()) {
|
| - linked_ptr<Event> event_ptr = pending_events_.front();
|
| + linked_ptr<GuestViewEvent> event_ptr = pending_events_.front();
|
| pending_events_.pop_front();
|
| - DispatchEvent(event_ptr.release(), view_instance_id_);
|
| + event_ptr.release()->Dispatch(this, view_instance_id_);
|
| }
|
| }
|
|
|
|
|