Upstream version 7.36.149.0
[platform/framework/web/crosswalk.git] / src / extensions / renderer / process_info_native_handler.cc
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "extensions/renderer/process_info_native_handler.h"
6
7 #include "base/bind.h"
8 #include "base/command_line.h"
9 #include "extensions/renderer/script_context.h"
10
11 namespace extensions {
12
13 ProcessInfoNativeHandler::ProcessInfoNativeHandler(
14     ScriptContext* context,
15     const std::string& extension_id,
16     const std::string& context_type,
17     bool is_incognito_context,
18     int manifest_version,
19     bool send_request_disabled)
20     : ObjectBackedNativeHandler(context),
21       extension_id_(extension_id),
22       context_type_(context_type),
23       is_incognito_context_(is_incognito_context),
24       manifest_version_(manifest_version),
25       send_request_disabled_(send_request_disabled) {
26   RouteFunction("GetExtensionId",
27                 base::Bind(&ProcessInfoNativeHandler::GetExtensionId,
28                            base::Unretained(this)));
29   RouteFunction("GetContextType",
30                 base::Bind(&ProcessInfoNativeHandler::GetContextType,
31                            base::Unretained(this)));
32   RouteFunction("InIncognitoContext",
33                 base::Bind(&ProcessInfoNativeHandler::InIncognitoContext,
34                            base::Unretained(this)));
35   RouteFunction("GetManifestVersion",
36                 base::Bind(&ProcessInfoNativeHandler::GetManifestVersion,
37                            base::Unretained(this)));
38   RouteFunction("IsSendRequestDisabled",
39                 base::Bind(&ProcessInfoNativeHandler::IsSendRequestDisabled,
40                            base::Unretained(this)));
41   RouteFunction(
42       "HasSwitch",
43       base::Bind(&ProcessInfoNativeHandler::HasSwitch, base::Unretained(this)));
44 }
45
46 void ProcessInfoNativeHandler::GetExtensionId(
47     const v8::FunctionCallbackInfo<v8::Value>& args) {
48   args.GetReturnValue().Set(
49       v8::String::NewFromUtf8(args.GetIsolate(), extension_id_.c_str()));
50 }
51
52 void ProcessInfoNativeHandler::GetContextType(
53     const v8::FunctionCallbackInfo<v8::Value>& args) {
54   args.GetReturnValue().Set(
55       v8::String::NewFromUtf8(args.GetIsolate(), context_type_.c_str()));
56 }
57
58 void ProcessInfoNativeHandler::InIncognitoContext(
59     const v8::FunctionCallbackInfo<v8::Value>& args) {
60   args.GetReturnValue().Set(is_incognito_context_);
61 }
62
63 void ProcessInfoNativeHandler::GetManifestVersion(
64     const v8::FunctionCallbackInfo<v8::Value>& args) {
65   args.GetReturnValue().Set(static_cast<int32_t>(manifest_version_));
66 }
67
68 void ProcessInfoNativeHandler::IsSendRequestDisabled(
69     const v8::FunctionCallbackInfo<v8::Value>& args) {
70   if (send_request_disabled_) {
71     args.GetReturnValue().Set(v8::String::NewFromUtf8(
72         args.GetIsolate(),
73         "sendRequest and onRequest are obsolete."
74         " Please use sendMessage and onMessage instead."));
75   }
76 }
77
78 void ProcessInfoNativeHandler::HasSwitch(
79     const v8::FunctionCallbackInfo<v8::Value>& args) {
80   CHECK(args.Length() == 1 && args[0]->IsString());
81   bool has_switch = CommandLine::ForCurrentProcess()->HasSwitch(
82       *v8::String::Utf8Value(args[0]));
83   args.GetReturnValue().Set(v8::Boolean::New(args.GetIsolate(), has_switch));
84 }
85
86 }  // namespace extensions