Chromium Code Reviews| 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( |
| + embedder_extension, |
| + process_map->GuessContextType(embedder_extension, |
| + embedder_render_process_id), |
| + web_contents->GetLastCommittedURL()); |
| + |
| + if (availability.is_available()) { |
|
not at google - send to devlin
2014/08/07 00:25:29
err, sorry about this reorganisation. I'll 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( |