| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "chrome/renderer/extensions/file_system_natives.h" | 5 #include "chrome/renderer/extensions/file_system_natives.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 | 8 |
| 9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
| 10 #include "base/logging.h" | 10 #include "base/logging.h" |
| (...skipping 21 matching lines...) Expand all Loading... |
| 32 RouteFunction("CrackIsolatedFileSystemName", | 32 RouteFunction("CrackIsolatedFileSystemName", |
| 33 base::Bind(&FileSystemNatives::CrackIsolatedFileSystemName, | 33 base::Bind(&FileSystemNatives::CrackIsolatedFileSystemName, |
| 34 base::Unretained(this))); | 34 base::Unretained(this))); |
| 35 } | 35 } |
| 36 | 36 |
| 37 void FileSystemNatives::GetIsolatedFileSystem( | 37 void FileSystemNatives::GetIsolatedFileSystem( |
| 38 const v8::FunctionCallbackInfo<v8::Value>& args) { | 38 const v8::FunctionCallbackInfo<v8::Value>& args) { |
| 39 DCHECK(args.Length() == 1 || args.Length() == 2); | 39 DCHECK(args.Length() == 1 || args.Length() == 2); |
| 40 DCHECK(args[0]->IsString()); | 40 DCHECK(args[0]->IsString()); |
| 41 std::string file_system_id(*v8::String::Utf8Value(args[0])); | 41 std::string file_system_id(*v8::String::Utf8Value(args[0])); |
| 42 WebKit::WebFrame* webframe = | 42 blink::WebFrame* webframe = |
| 43 WebKit::WebFrame::frameForContext(context()->v8_context()); | 43 blink::WebFrame::frameForContext(context()->v8_context()); |
| 44 DCHECK(webframe); | 44 DCHECK(webframe); |
| 45 | 45 |
| 46 GURL context_url = | 46 GURL context_url = |
| 47 extensions::UserScriptSlave::GetDataSourceURLForFrame(webframe); | 47 extensions::UserScriptSlave::GetDataSourceURLForFrame(webframe); |
| 48 CHECK(context_url.SchemeIs(extensions::kExtensionScheme)); | 48 CHECK(context_url.SchemeIs(extensions::kExtensionScheme)); |
| 49 | 49 |
| 50 std::string name(fileapi::GetIsolatedFileSystemName(context_url.GetOrigin(), | 50 std::string name(fileapi::GetIsolatedFileSystemName(context_url.GetOrigin(), |
| 51 file_system_id)); | 51 file_system_id)); |
| 52 | 52 |
| 53 // The optional second argument is the subfolder within the isolated file | 53 // The optional second argument is the subfolder within the isolated file |
| 54 // system at which to root the DOMFileSystem we're returning to the caller. | 54 // system at which to root the DOMFileSystem we're returning to the caller. |
| 55 std::string optional_root_name; | 55 std::string optional_root_name; |
| 56 if (args.Length() == 2) { | 56 if (args.Length() == 2) { |
| 57 DCHECK(args[1]->IsString()); | 57 DCHECK(args[1]->IsString()); |
| 58 optional_root_name = *v8::String::Utf8Value(args[1]); | 58 optional_root_name = *v8::String::Utf8Value(args[1]); |
| 59 } | 59 } |
| 60 | 60 |
| 61 std::string root(fileapi::GetIsolatedFileSystemRootURIString( | 61 std::string root(fileapi::GetIsolatedFileSystemRootURIString( |
| 62 context_url.GetOrigin(), | 62 context_url.GetOrigin(), |
| 63 file_system_id, | 63 file_system_id, |
| 64 optional_root_name)); | 64 optional_root_name)); |
| 65 | 65 |
| 66 args.GetReturnValue().Set(webframe->createFileSystem( | 66 args.GetReturnValue().Set(webframe->createFileSystem( |
| 67 WebKit::WebFileSystemTypeIsolated, | 67 blink::WebFileSystemTypeIsolated, |
| 68 WebKit::WebString::fromUTF8(name), | 68 blink::WebString::fromUTF8(name), |
| 69 WebKit::WebString::fromUTF8(root))); | 69 blink::WebString::fromUTF8(root))); |
| 70 } | 70 } |
| 71 | 71 |
| 72 void FileSystemNatives::GetFileEntry( | 72 void FileSystemNatives::GetFileEntry( |
| 73 const v8::FunctionCallbackInfo<v8::Value>& args) { | 73 const v8::FunctionCallbackInfo<v8::Value>& args) { |
| 74 DCHECK(args.Length() == 5); | 74 DCHECK(args.Length() == 5); |
| 75 DCHECK(args[0]->IsString()); | 75 DCHECK(args[0]->IsString()); |
| 76 std::string type_string = *v8::String::Utf8Value(args[0]->ToString()); | 76 std::string type_string = *v8::String::Utf8Value(args[0]->ToString()); |
| 77 WebKit::WebFileSystemType type; | 77 blink::WebFileSystemType type; |
| 78 bool is_valid_type = fileapi::GetFileSystemPublicType(type_string, &type); | 78 bool is_valid_type = fileapi::GetFileSystemPublicType(type_string, &type); |
| 79 DCHECK(is_valid_type); | 79 DCHECK(is_valid_type); |
| 80 if (is_valid_type == false) { | 80 if (is_valid_type == false) { |
| 81 return; | 81 return; |
| 82 } | 82 } |
| 83 | 83 |
| 84 DCHECK(args[1]->IsString()); | 84 DCHECK(args[1]->IsString()); |
| 85 DCHECK(args[2]->IsString()); | 85 DCHECK(args[2]->IsString()); |
| 86 DCHECK(args[3]->IsString()); | 86 DCHECK(args[3]->IsString()); |
| 87 std::string file_system_name(*v8::String::Utf8Value(args[1]->ToString())); | 87 std::string file_system_name(*v8::String::Utf8Value(args[1]->ToString())); |
| 88 std::string file_system_root_url(*v8::String::Utf8Value(args[2]->ToString())); | 88 std::string file_system_root_url(*v8::String::Utf8Value(args[2]->ToString())); |
| 89 std::string file_path_string(*v8::String::Utf8Value(args[3]->ToString())); | 89 std::string file_path_string(*v8::String::Utf8Value(args[3]->ToString())); |
| 90 base::FilePath file_path = base::FilePath::FromUTF8Unsafe(file_path_string); | 90 base::FilePath file_path = base::FilePath::FromUTF8Unsafe(file_path_string); |
| 91 DCHECK(fileapi::VirtualPath::IsAbsolute(file_path.value())); | 91 DCHECK(fileapi::VirtualPath::IsAbsolute(file_path.value())); |
| 92 | 92 |
| 93 DCHECK(args[4]->IsBoolean()); | 93 DCHECK(args[4]->IsBoolean()); |
| 94 bool is_directory = args[4]->BooleanValue(); | 94 bool is_directory = args[4]->BooleanValue(); |
| 95 | 95 |
| 96 WebKit::WebFrame* webframe = | 96 blink::WebFrame* webframe = |
| 97 WebKit::WebFrame::frameForContext(context()->v8_context()); | 97 blink::WebFrame::frameForContext(context()->v8_context()); |
| 98 DCHECK(webframe); | 98 DCHECK(webframe); |
| 99 args.GetReturnValue().Set(webframe->createFileEntry( | 99 args.GetReturnValue().Set(webframe->createFileEntry( |
| 100 type, | 100 type, |
| 101 WebKit::WebString::fromUTF8(file_system_name), | 101 blink::WebString::fromUTF8(file_system_name), |
| 102 WebKit::WebString::fromUTF8(file_system_root_url), | 102 blink::WebString::fromUTF8(file_system_root_url), |
| 103 WebKit::WebString::fromUTF8(file_path_string), | 103 blink::WebString::fromUTF8(file_path_string), |
| 104 is_directory)); | 104 is_directory)); |
| 105 } | 105 } |
| 106 | 106 |
| 107 void FileSystemNatives::CrackIsolatedFileSystemName( | 107 void FileSystemNatives::CrackIsolatedFileSystemName( |
| 108 const v8::FunctionCallbackInfo<v8::Value>& args) { | 108 const v8::FunctionCallbackInfo<v8::Value>& args) { |
| 109 DCHECK_EQ(args.Length(), 1); | 109 DCHECK_EQ(args.Length(), 1); |
| 110 DCHECK(args[0]->IsString()); | 110 DCHECK(args[0]->IsString()); |
| 111 std::string filesystem_name = *v8::String::Utf8Value(args[0]->ToString()); | 111 std::string filesystem_name = *v8::String::Utf8Value(args[0]->ToString()); |
| 112 std::string filesystem_id; | 112 std::string filesystem_id; |
| 113 if (!fileapi::CrackIsolatedFileSystemName(filesystem_name, &filesystem_id)) | 113 if (!fileapi::CrackIsolatedFileSystemName(filesystem_name, &filesystem_id)) |
| 114 return; | 114 return; |
| 115 | 115 |
| 116 args.GetReturnValue().Set( | 116 args.GetReturnValue().Set( |
| 117 v8::String::New(filesystem_id.c_str(), filesystem_id.size())); | 117 v8::String::New(filesystem_id.c_str(), filesystem_id.size())); |
| 118 } | 118 } |
| 119 | 119 |
| 120 } // namespace extensions | 120 } // namespace extensions |
| OLD | NEW |