1 // Copyright (c) 2012 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.
5 #include "chrome/renderer/extensions/page_actions_custom_bindings.h"
10 #include "chrome/common/extensions/api/extension_action/action_info.h"
11 #include "chrome/renderer/extensions/dispatcher.h"
12 #include "extensions/common/extension.h"
13 #include "grit/renderer_resources.h"
14 #include "v8/include/v8.h"
16 namespace extensions
{
18 PageActionsCustomBindings::PageActionsCustomBindings(
19 Dispatcher
* dispatcher
, ChromeV8Context
* context
)
20 : ChromeV8Extension(dispatcher
, context
) {
21 RouteFunction("GetCurrentPageActions",
22 base::Bind(&PageActionsCustomBindings::GetCurrentPageActions
,
23 base::Unretained(this)));
26 void PageActionsCustomBindings::GetCurrentPageActions(
27 const v8::FunctionCallbackInfo
<v8::Value
>& args
) {
28 std::string extension_id
= *v8::String::Utf8Value(args
[0]->ToString());
29 CHECK(!extension_id
.empty());
30 const Extension
* extension
=
31 dispatcher_
->extensions()->GetByID(extension_id
);
34 v8::Isolate
* isolate
= args
.GetIsolate();
35 v8::Local
<v8::Array
> page_action_vector
= v8::Array::New(isolate
);
36 if (ActionInfo::GetPageActionInfo(extension
)) {
37 std::string id
= ActionInfo::GetPageActionInfo(extension
)->id
;
38 page_action_vector
->Set(v8::Integer::New(isolate
, 0),
39 v8::String::NewFromUtf8(isolate
,
41 v8::String::kNormalString
,
45 args
.GetReturnValue().Set(page_action_vector
);
48 } // namespace extensions