// Copyright 2014 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "extensions/renderer/process_info_native_handler.h" #include "base/bind.h" #include "base/command_line.h" #include "extensions/renderer/script_context.h" namespace extensions { ProcessInfoNativeHandler::ProcessInfoNativeHandler( ScriptContext* context, const std::string& extension_id, const std::string& context_type, bool is_incognito_context, bool is_component_extension, int manifest_version, bool send_request_disabled) : ObjectBackedNativeHandler(context), extension_id_(extension_id), context_type_(context_type), is_incognito_context_(is_incognito_context), is_component_extension_(is_component_extension), manifest_version_(manifest_version), send_request_disabled_(send_request_disabled) { RouteFunction("GetExtensionId", base::Bind(&ProcessInfoNativeHandler::GetExtensionId, base::Unretained(this))); RouteFunction("GetContextType", base::Bind(&ProcessInfoNativeHandler::GetContextType, base::Unretained(this))); RouteFunction("InIncognitoContext", base::Bind(&ProcessInfoNativeHandler::InIncognitoContext, base::Unretained(this))); RouteFunction("IsComponentExtension", base::Bind(&ProcessInfoNativeHandler::IsComponentExtension, base::Unretained(this))); RouteFunction("GetManifestVersion", base::Bind(&ProcessInfoNativeHandler::GetManifestVersion, base::Unretained(this))); RouteFunction("IsSendRequestDisabled", base::Bind(&ProcessInfoNativeHandler::IsSendRequestDisabled, base::Unretained(this))); RouteFunction( "HasSwitch", base::Bind(&ProcessInfoNativeHandler::HasSwitch, base::Unretained(this))); } void ProcessInfoNativeHandler::GetExtensionId( const v8::FunctionCallbackInfo& args) { args.GetReturnValue().Set( v8::String::NewFromUtf8(args.GetIsolate(), extension_id_.c_str())); } void ProcessInfoNativeHandler::GetContextType( const v8::FunctionCallbackInfo& args) { args.GetReturnValue().Set( v8::String::NewFromUtf8(args.GetIsolate(), context_type_.c_str())); } void ProcessInfoNativeHandler::InIncognitoContext( const v8::FunctionCallbackInfo& args) { args.GetReturnValue().Set(is_incognito_context_); } void ProcessInfoNativeHandler::IsComponentExtension( const v8::FunctionCallbackInfo& args) { args.GetReturnValue().Set(is_component_extension_); } void ProcessInfoNativeHandler::GetManifestVersion( const v8::FunctionCallbackInfo& args) { args.GetReturnValue().Set(static_cast(manifest_version_)); } void ProcessInfoNativeHandler::IsSendRequestDisabled( const v8::FunctionCallbackInfo& args) { if (send_request_disabled_) { args.GetReturnValue().Set(v8::String::NewFromUtf8( args.GetIsolate(), "sendRequest and onRequest are obsolete." " Please use sendMessage and onMessage instead.")); } } void ProcessInfoNativeHandler::HasSwitch( const v8::FunctionCallbackInfo& args) { CHECK(args.Length() == 1 && args[0]->IsString()); bool has_switch = base::CommandLine::ForCurrentProcess()->HasSwitch( *v8::String::Utf8Value(args[0])); args.GetReturnValue().Set(v8::Boolean::New(args.GetIsolate(), has_switch)); } } // namespace extensions