| Index: chrome/renderer/extensions/chrome_v8_context.cc
|
| diff --git a/chrome/renderer/extensions/chrome_v8_context.cc b/chrome/renderer/extensions/chrome_v8_context.cc
|
| index 8fb43360767d02f70ce0cd9d80e1e0425aa4a425..631a8b2c252ffe020efb7b83aa170f107333bd47 100644
|
| --- a/chrome/renderer/extensions/chrome_v8_context.cc
|
| +++ b/chrome/renderer/extensions/chrome_v8_context.cc
|
| @@ -104,8 +104,17 @@ bool ChromeV8Context::IsAnyFeatureAvailableToContext(const Feature& api) {
|
|
|
| Feature::Availability ChromeV8Context::GetAvailability(
|
| const std::string& api_name) {
|
| + // Hack: Hosted apps should have the availability of messaging APIs based on
|
| + // the URL of the page (which might have access depending on some extension
|
| + // with externally_connectable), not whether the app has access to messaging
|
| + // (which it won't).
|
| + const Extension* extension = extension_.get();
|
| + if (extension && extension->is_hosted_app() &&
|
| + (api_name == "runtime.connect" || api_name == "runtime.sendMessage")) {
|
| + extension = NULL;
|
| + }
|
| return ExtensionAPI::GetSharedInstance()->IsAvailable(api_name,
|
| - extension_.get(),
|
| + extension,
|
| context_type_,
|
| GetURL());
|
| }
|
|
|