diff options
author | thorogood@chromium.org <thorogood@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-30 10:19:34 +0000 |
---|---|---|
committer | thorogood@chromium.org <thorogood@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-08-30 10:19:34 +0000 |
commit | cd8741d71b329015d21929d527f0d10ccc735d70 (patch) | |
tree | ae9fcdf2bf53a1d4a282ef1d15fe95ee231ffe5d /chrome/renderer | |
parent | 449d60d3c89f4862cc8348e2327f4459a758d63c (diff) | |
download | chromium_src-cd8741d71b329015d21929d527f0d10ccc735d70.zip chromium_src-cd8741d71b329015d21929d527f0d10ccc735d70.tar.gz chromium_src-cd8741d71b329015d21929d527f0d10ccc735d70.tar.bz2 |
This forwards through a DOMFileSystem of the attached media device to interested packaged apps, via Web Intent data.
BUG=144520
Review URL: https://chromiumcodereview.appspot.com/10869067
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@154112 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/renderer')
-rw-r--r-- | chrome/renderer/extensions/file_system_natives.cc | 15 | ||||
-rw-r--r-- | chrome/renderer/resources/extensions/app_runtime_custom_bindings.js | 7 |
2 files changed, 19 insertions, 3 deletions
diff --git a/chrome/renderer/extensions/file_system_natives.cc b/chrome/renderer/extensions/file_system_natives.cc index ff34be7..6b6e029 100644 --- a/chrome/renderer/extensions/file_system_natives.cc +++ b/chrome/renderer/extensions/file_system_natives.cc @@ -21,7 +21,7 @@ namespace { static v8::Handle<v8::Value> GetIsolatedFileSystem( const v8::Arguments& args) { - DCHECK(args.Length() == 1); + DCHECK(args.Length() == 1 || args.Length() == 2); DCHECK(args[0]->IsString()); std::string file_system_id(*v8::String::Utf8Value(args[0])); WebKit::WebFrame* webframe = WebKit::WebFrame::frameForCurrentContext(); @@ -40,10 +40,19 @@ static v8::Handle<v8::Value> GetIsolatedFileSystem( root.append(file_system_id); root.append("/"); + // The optional second argument is the subfolder within the isolated file + // system at which to root the DOMFileSystem we're returning to the caller. + if (args.Length() == 2) { + DCHECK(args[1]->IsString()); + name = *v8::String::Utf8Value(args[1]); + root.append(name); + root.append("/"); + } + return webframe->createFileSystem( WebKit::WebFileSystem::TypeIsolated, - WebKit::WebString::fromUTF8(name.c_str()), - WebKit::WebString::fromUTF8(root.c_str())); + WebKit::WebString::fromUTF8(name), + WebKit::WebString::fromUTF8(root)); } } // namespace diff --git a/chrome/renderer/resources/extensions/app_runtime_custom_bindings.js b/chrome/renderer/resources/extensions/app_runtime_custom_bindings.js index 77da149..9374a5b 100644 --- a/chrome/renderer/resources/extensions/app_runtime_custom_bindings.js +++ b/chrome/renderer/resources/extensions/app_runtime_custom_bindings.js @@ -35,6 +35,13 @@ chromeHidden.Event.registerArgumentMassager('app.runtime.onLaunched', dispatch([]); } break; + case('filesystem'): + launchData.intent.data = GetIsolatedFileSystem(intentData.fileSystemId, + intentData.baseName); + launchData.intent.postResult = function() {}; + launchData.intent.postFailure = function() {}; + dispatch([launchData]); + break; case('serialized'): var deserializedData = DeserializeString(intentData.data); launchData.intent.data = deserializedData; |