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 "grit/renderer_resources.h" 13 #include "third_party/WebKit/public/platform/WebFileSystem.h" 14 #include "third_party/WebKit/public/platform/WebFileSystemType.h" 15 #include "third_party/WebKit/public/platform/WebString.h" 16 #include "third_party/WebKit/public/web/WebFrame.h" 17 18 namespace extensions { 19 20 FileBrowserPrivateCustomBindings::FileBrowserPrivateCustomBindings( 21 Dispatcher* dispatcher, ChromeV8Context* context) 22 : ChromeV8Extension(dispatcher, context) { 23 RouteFunction( 24 "GetFileSystem", 25 base::Bind(&FileBrowserPrivateCustomBindings::GetFileSystem, 26 base::Unretained(this))); 27 } 28 29 void FileBrowserPrivateCustomBindings::GetFileSystem( 30 const v8::FunctionCallbackInfo<v8::Value>& args) { 31 DCHECK(args.Length() == 2); 32 DCHECK(args[0]->IsString()); 33 DCHECK(args[1]->IsString()); 34 std::string name(*v8::String::Utf8Value(args[0])); 35 std::string path(*v8::String::Utf8Value(args[1])); 36 37 WebKit::WebFrame* webframe = 38 WebKit::WebFrame::frameForContext(context()->v8_context()); 39 DCHECK(webframe); 40 args.GetReturnValue().Set( 41 webframe->createFileSystem( 42 WebKit::WebFileSystemTypeExternal, 43 WebKit::WebString::fromUTF8(name.c_str()), 44 WebKit::WebString::fromUTF8(path.c_str()))); 45 } 46 47 } // namespace extensions 48