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

Unified Diff: extensions/browser/guest_view/guest_view_base.cc

Issue 1087123002: Towards Decoupling GuestView from Extensions (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Addressed lazyboy@'s comments. Removed unnecessary includes. Simplified GuestViewEvent. Created 5 years, 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « extensions/browser/guest_view/guest_view_base.h ('k') | extensions/browser/guest_view/guest_view_event.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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_);
}
}
« no previous file with comments | « extensions/browser/guest_view/guest_view_base.h ('k') | extensions/browser/guest_view/guest_view_event.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698