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. 4 5 #include "chrome/renderer/extensions/file_browser_private_custom_bindings.h" 6 7 #include <string> 8 9 #include "base/basictypes.h" 10 #include "base/logging.h" 11 #include "chrome/renderer/extensions/chrome_v8_context.h" 12 #include "extensions/renderer/script_context.h" 13 #include "third_party/WebKit/public/platform/WebString.h" 14 #include "third_party/WebKit/public/web/WebDOMFileSystem.h" 15 #include "third_party/WebKit/public/web/WebLocalFrame.h" 16 17 namespace extensions { 18 19 FileBrowserPrivateCustomBindings::FileBrowserPrivateCustomBindings( 20 ScriptContext* context) 21 : ObjectBackedNativeHandler(context) { 22 RouteFunction( 23 "GetFileSystem", 24 base::Bind(&FileBrowserPrivateCustomBindings::GetFileSystem, 25 base::Unretained(this))); 26 } 27 28 void FileBrowserPrivateCustomBindings::GetFileSystem( 29 const v8::FunctionCallbackInfo<v8::Value>& args) { 30 DCHECK(args.Length() == 2); 31 DCHECK(args[0]->IsString()); 32 DCHECK(args[1]->IsString()); 33 std::string name(*v8::String::Utf8Value(args[0])); 34 std::string root_url(*v8::String::Utf8Value(args[1])); 35 36 blink::WebLocalFrame* webframe = 37 blink::WebLocalFrame::frameForContext(context()->v8_context()); 38 DCHECK(webframe); 39 args.GetReturnValue().Set( 40 blink::WebDOMFileSystem::create(webframe, 41 blink::WebFileSystemTypeExternal, 42 blink::WebString::fromUTF8(name), 43 GURL(root_url)) 44 .toV8Value(args.Holder(), args.GetIsolate())); 45 } 46 47 } // namespace extensions 48