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 "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