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

Unified Diff: chrome/renderer/extensions/extension_dispatcher.cc

Issue 10310182: Hack to restrict runtime API to dev channel rather than experimental. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: docs Created 8 years, 7 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 | « chrome/renderer/extensions/extension_dispatcher.h ('k') | chrome/renderer/renderer_resources.grd » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/renderer/extensions/extension_dispatcher.cc
diff --git a/chrome/renderer/extensions/extension_dispatcher.cc b/chrome/renderer/extensions/extension_dispatcher.cc
index 1d9625993911aa549914e7fe21c966e7370c2e5a..559b8ef6af3eacba108152f6c7431b5f2f936f98 100644
--- a/chrome/renderer/extensions/extension_dispatcher.cc
+++ b/chrome/renderer/extensions/extension_dispatcher.cc
@@ -10,6 +10,7 @@
#include "base/string_piece.h"
#include "chrome/common/child_process_logging.h"
#include "chrome/common/chrome_switches.h"
+#include "chrome/common/chrome_version_info.h"
#include "chrome/common/chrome_view_type.h"
#include "chrome/common/extensions/api/extension_api.h"
#include "chrome/common/extensions/extension.h"
@@ -92,8 +93,7 @@ namespace {
static const int64 kInitialExtensionIdleHandlerDelayMs = 5*1000;
static const int64 kMaxExtensionIdleHandlerDelayMs = 5*60*1000;
static const char kEventDispatchFunction[] = "Event.dispatchJSON";
-static const char kOnUnloadEvent[] =
- "experimental.runtime.onBackgroundPageUnloadingSoon";
+static const char kOnUnloadEvent[] = "runtime.onBackgroundPageUnloadingSoon";
class ChromeHiddenNativeHandler : public NativeHandler {
public:
@@ -179,6 +179,22 @@ class LazyBackgroundPageNativeHandler : public ChromeV8Extension {
}
};
+class ChannelNativeHandler : public NativeHandler {
+ public:
+ explicit ChannelNativeHandler(chrome::VersionInfo::Channel channel)
+ : channel_(channel) {
+ RouteFunction("IsDevChannel",
+ base::Bind(&ChannelNativeHandler::IsDevChannel,
+ base::Unretained(this)));
+ }
+
+ v8::Handle<v8::Value> IsDevChannel(const v8::Arguments& args) {
+ return v8::Boolean::New(channel_ <= chrome::VersionInfo::CHANNEL_DEV);
+ }
+
+ chrome::VersionInfo::Channel channel_;
+};
+
void InstallAppBindings(ModuleSystem* module_system,
v8::Handle<v8::Object> chrome,
v8::Handle<v8::Object> chrome_hidden) {
@@ -204,7 +220,8 @@ ExtensionDispatcher::ExtensionDispatcher()
webrequest_adblock_(false),
webrequest_adblock_plus_(false),
webrequest_other_(false),
- source_map_(&ResourceBundle::GetSharedInstance()) {
+ source_map_(&ResourceBundle::GetSharedInstance()),
+ chrome_channel_(chrome::VersionInfo::CHANNEL_UNKNOWN) {
const CommandLine& command_line = *(CommandLine::ForCurrentProcess());
is_extension_process_ =
command_line.HasSwitch(switches::kExtensionProcess) ||
@@ -228,6 +245,7 @@ bool ExtensionDispatcher::OnControlMessageReceived(
const IPC::Message& message) {
bool handled = true;
IPC_BEGIN_MESSAGE_MAP(ExtensionDispatcher, message)
+ IPC_MESSAGE_HANDLER(ExtensionMsg_SetChannel, OnSetChannel)
IPC_MESSAGE_HANDLER(ExtensionMsg_MessageInvoke, OnMessageInvoke)
IPC_MESSAGE_HANDLER(ExtensionMsg_DispatchOnConnect, OnDispatchOnConnect)
IPC_MESSAGE_HANDLER(ExtensionMsg_DeliverMessage, OnDeliverMessage)
@@ -292,6 +310,10 @@ void ExtensionDispatcher::OnSetFunctionNames(
function_names_.insert(names[i]);
}
+void ExtensionDispatcher::OnSetChannel(int channel) {
+ chrome_channel_ = channel;
+}
+
void ExtensionDispatcher::OnMessageInvoke(const std::string& extension_id,
const std::string& function_name,
const ListValue& args,
@@ -526,8 +548,6 @@ void ExtensionDispatcher::PopulateSourceMap() {
IDR_MEDIA_GALLERY_CUSTOM_BINDINGS_JS);
source_map_.RegisterSource("experimental.offscreen",
IDR_EXPERIMENTAL_OFFSCREENTABS_CUSTOM_BINDINGS_JS);
- source_map_.RegisterSource("experimental.runtime",
- IDR_EXPERIMENTAL_RUNTIME_CUSTOM_BINDINGS_JS);
source_map_.RegisterSource("experimental.usb",
IDR_EXPERIMENTAL_USB_CUSTOM_BINDINGS_JS);
source_map_.RegisterSource("extension", IDR_EXTENSION_CUSTOM_BINDINGS_JS);
@@ -545,6 +565,7 @@ void ExtensionDispatcher::PopulateSourceMap() {
source_map_.RegisterSource("pageCapture",
IDR_PAGE_CAPTURE_CUSTOM_BINDINGS_JS);
source_map_.RegisterSource("platformApp", IDR_PLATFORM_APP_JS);
+ source_map_.RegisterSource("runtime", IDR_RUNTIME_CUSTOM_BINDINGS_JS);
source_map_.RegisterSource("storage", IDR_STORAGE_CUSTOM_BINDINGS_JS);
source_map_.RegisterSource("tabs", IDR_TABS_CUSTOM_BINDINGS_JS);
source_map_.RegisterSource("tts", IDR_TTS_CUSTOM_BINDINGS_JS);
@@ -622,6 +643,9 @@ void ExtensionDispatcher::DidCreateScriptContext(
scoped_ptr<NativeHandler>(new PrintNativeHandler()));
module_system->RegisterNativeHandler("lazy_background_page",
scoped_ptr<NativeHandler>(new LazyBackgroundPageNativeHandler(this)));
+ module_system->RegisterNativeHandler("channel",
+ scoped_ptr<NativeHandler>(new ChannelNativeHandler(
+ static_cast<chrome::VersionInfo::Channel>(chrome_channel_))));
int manifest_version = 1;
if (extension)
« no previous file with comments | « chrome/renderer/extensions/extension_dispatcher.h ('k') | chrome/renderer/renderer_resources.grd » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698