Index: chrome/browser/guest_view/guest_view_base.cc |
diff --git a/chrome/browser/guest_view/guest_view_base.cc b/chrome/browser/guest_view/guest_view_base.cc |
index 1300cfbb50d4b30240729963b6c2ff87dfcf8b4a..24211a66dba7eec26e72fca541dbd11cb97e0207 100644 |
--- a/chrome/browser/guest_view/guest_view_base.cc |
+++ b/chrome/browser/guest_view/guest_view_base.cc |
@@ -18,6 +18,9 @@ |
#include "content/public/browser/web_contents.h" |
#include "content/public/common/url_constants.h" |
#include "extensions/browser/event_router.h" |
+#include "extensions/browser/extension_registry.h" |
+#include "extensions/browser/process_map.h" |
+#include "extensions/common/features/feature.h" |
#include "third_party/WebKit/public/web/WebInputEvent.h" |
using content::WebContents; |
@@ -97,28 +100,46 @@ GuestViewBase::GuestViewBase(content::BrowserContext* browser_context, |
weak_ptr_factory_(this) { |
} |
-void GuestViewBase::Init( |
- const std::string& embedder_extension_id, |
- int embedder_render_process_id, |
- const base::DictionaryValue& create_params, |
- const WebContentsCreatedCallback& callback) { |
+void GuestViewBase::Init(const std::string& embedder_extension_id, |
+ int embedder_render_process_id, |
+ content::WebContents* web_contents, |
+ const base::DictionaryValue& create_params, |
+ const WebContentsCreatedCallback& callback) { |
if (initialized_) |
return; |
initialized_ = true; |
- if (!CanEmbedderUseGuestView(embedder_extension_id)) { |
+ extensions::Feature* feature = GetFeature(); |
+ CHECK(feature); |
+ |
+ const extensions::Extension* embedder_extension = |
+ extensions::ExtensionRegistry::Get(browser_context_) |
+ ->enabled_extensions() |
+ .GetByID(embedder_extension_id); |
+ |
+ extensions::ProcessMap* process_map = |
+ extensions::ProcessMap::Get(browser_context()); |
+ CHECK(process_map); |
+ |
+ extensions::Feature::Availability availability = |
+ feature->IsAvailableToContext( |
Fady Samuel
2014/08/07 17:29:31
appViewInternal is available in all apps I think.
not at google - send to devlin
2014/08/07 17:34:41
appViewInternal is defined like:
https://code.goo
|
+ embedder_extension, |
+ process_map->GuessContextType(embedder_extension, |
+ embedder_render_process_id), |
+ web_contents->GetLastCommittedURL()); |
+ |
+ if (availability.is_available()) { |
Fady Samuel
2014/08/07 17:29:31
Early exit preferred:
if (!availability.is_availa
not at google - send to devlin
2014/08/07 17:34:41
yeah this was an accidental change :)
|
+ CreateWebContents(embedder_extension_id, |
+ embedder_render_process_id, |
+ create_params, |
+ base::Bind(&GuestViewBase::CompleteInit, |
+ AsWeakPtr(), |
+ embedder_extension_id, |
+ embedder_render_process_id, |
+ callback)); |
+ } else { |
callback.Run(NULL); |
- return; |
} |
- |
- CreateWebContents(embedder_extension_id, |
- embedder_render_process_id, |
- create_params, |
- base::Bind(&GuestViewBase::CompleteInit, |
- AsWeakPtr(), |
- embedder_extension_id, |
- embedder_render_process_id, |
- callback)); |
} |
void GuestViewBase::InitWithWebContents( |