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 // Custom bindings for the experimental.app API. | 5 // Custom bindings for the experimental.app API. |
6 | 6 |
7 var chromeHidden = requireNative('chrome_hidden').GetChromeHidden(); | 7 var chromeHidden = requireNative('chrome_hidden').GetChromeHidden(); |
8 var fileSystemHelpers = requireNative('file_system_natives'); | 8 var fileSystemHelpers = requireNative('file_system_natives'); |
9 var GetIsolatedFileSystem = fileSystemHelpers.GetIsolatedFileSystem; | 9 var GetIsolatedFileSystem = fileSystemHelpers.GetIsolatedFileSystem; |
10 var appNatives = requireNative('experimental_app'); | 10 var appNatives = requireNative('experimental_app'); |
11 var DeserializeString = appNatives.DeserializeString; | 11 var DeserializeString = appNatives.DeserializeString; |
12 var CreateBlob = appNatives.CreateBlob; | 12 var CreateBlob = appNatives.CreateBlob; |
13 | 13 |
14 chromeHidden.Event.registerArgumentMassager('experimental.app.onLaunched', | 14 chromeHidden.registerCustomHook('experimental.app', function(bindingsAPI) { |
15 function(args, dispatch) { | 15 chrome.experimental.app.onLaunched.dispatch = |
16 var launchData = args[0]; | 16 function(launchData, intentData) { |
17 var intentData = args[1]; | 17 if (launchData && intentData) { |
18 | 18 switch(intentData.format) { |
19 if (launchData && intentData) { | 19 case('fileEntry'): |
20 switch(intentData.format) { | 20 var event = this; |
21 case('fileEntry'): | 21 var fs = GetIsolatedFileSystem(intentData.fileSystemId); |
22 var fs = GetIsolatedFileSystem(intentData.fileSystemId); | 22 try { |
23 try { | 23 fs.root.getFile(intentData.baseName, {}, function(fileEntry) { |
24 fs.root.getFile(intentData.baseName, {}, function(fileEntry) { | 24 launchData.intent.data = fileEntry; |
25 launchData.intent.data = fileEntry; | 25 launchData.intent.postResult = function() {}; |
26 launchData.intent.postResult = function() {}; | 26 launchData.intent.postFailure = function() {}; |
27 launchData.intent.postFailure = function() {}; | 27 chrome.Event.prototype.dispatch.call(event, launchData); |
28 dispatch([launchData]); | 28 }, function(fileError) { |
29 }, function(fileError) { | 29 console.error('Error getting fileEntry, code: ' + fileError.code); |
30 console.error('Error getting fileEntry, code: ' + fileError.code); | 30 chrome.Event.prototype.dispatch.call(event); |
31 dispatch([]); | 31 }); |
32 }); | 32 } catch (e) { |
33 } catch (e) { | 33 console.error('Error in event handler for onLaunched: ' + e.stack); |
34 console.error('Error in event handler for onLaunched: ' + e.stack); | 34 chrome.Event.prototype.dispatch.call(event); |
35 dispatch([]); | 35 } |
36 } | 36 break; |
37 break; | 37 case('serialized'): |
38 case('serialized'): | 38 var deserializedData = DeserializeString(intentData.data); |
39 var deserializedData = DeserializeString(intentData.data); | 39 launchData.intent.data = deserializedData; |
40 launchData.intent.data = deserializedData; | 40 launchData.intent.postResult = function() {}; |
41 launchData.intent.postResult = function() {}; | 41 launchData.intent.postFailure = function() {}; |
42 launchData.intent.postFailure = function() {}; | 42 chrome.Event.prototype.dispatch.call(this, launchData); |
43 dispatch([launchData]); | 43 break; |
44 break; | 44 case('blob'): |
45 case('blob'): | 45 var blobData = CreateBlob(intentData.blobFilePath, |
46 var blobData = CreateBlob(intentData.blobFilePath, | 46 intentData.blobLength); |
47 intentData.blobLength); | 47 launchData.intent.data = blobData; |
48 launchData.intent.data = blobData; | 48 launchData.intent.postResult = function() {}; |
49 launchData.intent.postResult = function() {}; | 49 launchData.intent.postFailure = function() {}; |
50 launchData.intent.postFailure = function() {}; | 50 chrome.Event.prototype.dispatch.call(this, launchData); |
51 dispatch([launchData]); | 51 break; |
52 break; | 52 default: |
53 default: | 53 console.error('Unexpected launch data format'); |
54 console.error('Unexpected launch data format'); | 54 chrome.Event.prototype.dispatch.call(this); |
55 dispatch([]); | 55 } |
| 56 } else if (launchData) { |
| 57 chrome.Event.prototype.dispatch.call(this, launchData); |
| 58 } else { |
| 59 chrome.Event.prototype.dispatch.call(this); |
56 } | 60 } |
57 } else if (launchData) { | 61 }; |
58 dispatch([launchData]); | |
59 } else { | |
60 dispatch([]); | |
61 } | |
62 }); | 62 }); |
OLD | NEW |