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