Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6291)

Unified Diff: chrome/renderer/resources/extensions/experimental.app_custom_bindings.js

Issue 10828172: Allow platform apps to respond to Web Intents (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Ben' Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/renderer/resources/extensions/experimental.app_custom_bindings.js
diff --git a/chrome/renderer/resources/extensions/experimental.app_custom_bindings.js b/chrome/renderer/resources/extensions/experimental.app_custom_bindings.js
index a586df96f8e9e8eec8cb6c98678c7a71a9962894..ac59fd7c4c2ea22aabdd868eda7d1de540d26b1b 100644
--- a/chrome/renderer/resources/extensions/experimental.app_custom_bindings.js
+++ b/chrome/renderer/resources/extensions/experimental.app_custom_bindings.js
@@ -9,12 +9,32 @@ var fileSystemHelpers = requireNative('file_system_natives');
var GetIsolatedFileSystem = fileSystemHelpers.GetIsolatedFileSystem;
var appNatives = requireNative('experimental_app');
var DeserializeString = appNatives.DeserializeString;
+var SerializeToString = appNatives.SerializeToString;
var CreateBlob = appNatives.CreateBlob;
chromeHidden.Event.registerArgumentMassager('experimental.app.onLaunched',
function(args, dispatch) {
- var launchData = args[0];
- var intentData = args[1];
+ var intentId = args[0];
+ var launchData = args[1];
+ var intentData = args[2];
+
+ if (launchData) {
+ if (intentId) {
+ var fn = function(success, data) {
+ // TODO(thorogood): What if data is not of a serializable type?
+ chrome.experimental.app.postIntentResponse({
+ 'intentId': intentId,
+ 'success': success,
+ 'data': SerializeToString(data)
+ });
+ };
+ launchData.intent.postResult = fn.bind(undefined, true);
+ launchData.intent.postFailure = fn.bind(undefined, false);
+ } else {
+ launchData.intent.postResult = function() {};
+ launchData.intent.postFailure = function() {};
+ }
+ }
if (launchData && intentData) {
switch(intentData.format) {
@@ -23,8 +43,6 @@ chromeHidden.Event.registerArgumentMassager('experimental.app.onLaunched',
try {
fs.root.getFile(intentData.baseName, {}, function(fileEntry) {
launchData.intent.data = fileEntry;
- launchData.intent.postResult = function() {};
- launchData.intent.postFailure = function() {};
dispatch([launchData]);
}, function(fileError) {
console.error('Error getting fileEntry, code: ' + fileError.code);
@@ -38,16 +56,12 @@ chromeHidden.Event.registerArgumentMassager('experimental.app.onLaunched',
case('serialized'):
var deserializedData = DeserializeString(intentData.data);
launchData.intent.data = deserializedData;
- launchData.intent.postResult = function() {};
- launchData.intent.postFailure = function() {};
dispatch([launchData]);
break;
case('blob'):
var blobData = CreateBlob(intentData.blobFilePath,
intentData.blobLength);
launchData.intent.data = blobData;
- launchData.intent.postResult = function() {};
- launchData.intent.postFailure = function() {};
dispatch([launchData]);
break;
default:

Powered by Google App Engine
This is Rietveld 408576698