Home | History | Annotate | Download | only in extensions
      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