summaryrefslogtreecommitdiffstats
path: root/chrome/renderer
diff options
context:
space:
mode:
authorthorogood@chromium.org <thorogood@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-30 10:19:34 +0000
committerthorogood@chromium.org <thorogood@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-08-30 10:19:34 +0000
commitcd8741d71b329015d21929d527f0d10ccc735d70 (patch)
treeae9fcdf2bf53a1d4a282ef1d15fe95ee231ffe5d /chrome/renderer
parent449d60d3c89f4862cc8348e2327f4459a758d63c (diff)
downloadchromium_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.cc15
-rw-r--r--chrome/renderer/resources/extensions/app_runtime_custom_bindings.js7
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;