1010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Copyright 2014 The Chromium Authors. All rights reserved.
2010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
3010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)// found in the LICENSE file.
4010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
5010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "extensions/renderer/test_features_native_handler.h"
6010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
7010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "base/bind.h"
8010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "content/public/renderer/v8_value_converter.h"
9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "extensions/common/extensions_client.h"
10010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "extensions/common/features/json_feature_provider_source.h"
11010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)#include "extensions/renderer/script_context.h"
12010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
13010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)namespace extensions {
14010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
15010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)TestFeaturesNativeHandler::TestFeaturesNativeHandler(ScriptContext* context)
16010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    : ObjectBackedNativeHandler(context) {
17010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  RouteFunction("GetAPIFeatures",
18010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)                base::Bind(&TestFeaturesNativeHandler::GetAPIFeatures,
19010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)                           base::Unretained(this)));
20010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}
21010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
22010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)void TestFeaturesNativeHandler::GetAPIFeatures(
23010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)    const v8::FunctionCallbackInfo<v8::Value>& args) {
24cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  scoped_ptr<JSONFeatureProviderSource> source(
25cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      ExtensionsClient::Get()->CreateFeatureProviderSource("api"));
26010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  scoped_ptr<content::V8ValueConverter> converter(
27010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)      content::V8ValueConverter::create());
28010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  args.GetReturnValue().Set(
29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      converter->ToV8Value(&source->dictionary(), context()->v8_context()));
30010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}
31010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)
32010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)}  // namespace extensions
33