OLD | NEW |
1 // Copyright 2015 Google Inc. All Rights Reserved. | 1 // Copyright 2015 Google Inc. All Rights Reserved. |
2 // | 2 // |
3 // Licensed under the Apache License, Version 2.0 (the "License"); | 3 // Licensed under the Apache License, Version 2.0 (the "License"); |
4 // you may not use this file except in compliance with the License. | 4 // you may not use this file except in compliance with the License. |
5 // You may obtain a copy of the License at | 5 // You may obtain a copy of the License at |
6 // | 6 // |
7 // http://www.apache.org/licenses/LICENSE-2.0 | 7 // http://www.apache.org/licenses/LICENSE-2.0 |
8 // | 8 // |
9 // Unless required by applicable law or agreed to in writing, software | 9 // Unless required by applicable law or agreed to in writing, software |
10 // distributed under the License is distributed on an "AS IS" BASIS, | 10 // distributed under the License is distributed on an "AS IS" BASIS, |
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | 11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
12 // See the License for the specific language governing permissions and | 12 // See the License for the specific language governing permissions and |
13 // limitations under the License. | 13 // limitations under the License. |
14 | 14 |
15 /** | 15 /** |
16 * Common utilities and types for Caterpillar. | 16 * Common utilities and types for Caterpillar. |
17 * | 17 * |
18 * Must be included before any Caterpillar polyfills. | 18 * Must be included before any Caterpillar polyfills. |
19 */ | 19 */ |
20 | 20 |
21 'use strict'; | 21 'use strict'; |
22 | 22 |
23 // Set up a namespace if one doesn't already exist. | 23 // Set up a namespace if one doesn't already exist. |
24 if (!('chrome' in self)) | 24 if (!('chrome' in self)) |
25 self.chrome = {}; | 25 self.chrome = {}; |
26 | 26 |
27 if (!chrome.caterpillar) | 27 if (!chrome.caterpillar) |
28 chrome.caterpillar = {}; | 28 chrome.caterpillar = {}; |
29 | 29 |
| 30 // We need the chrome.runtime namespace to store errors in. |
| 31 if (!chrome.runtime) |
| 32 chrome.runtime = { lastError: null }; |
| 33 |
| 34 // Stub out chrome.app.runtime.onLaunched.addListener. All Chrome Apps call this |
| 35 // method to launch the main window. Stubbing it means that background scripts |
| 36 // that launch the main window can be re-used elsewhere without causing script |
| 37 // errors. |
| 38 chrome.app = { |
| 39 runtime: { |
| 40 onLaunched: { |
| 41 addListener: function() {}, |
| 42 } |
| 43 } |
| 44 }; |
| 45 |
30 (function() { | 46 (function() { |
31 | 47 |
32 /** | 48 /** |
33 * Sets an error message in lastError if chrome.runtime is loaded. | 49 * Sets an error message in chrome.runtime.lastError. |
34 * | 50 * |
35 * @param {string} message The error message to set. | 51 * @param {string} message The error message to set. |
36 * | |
37 * @throws Error with given message if runtime is not loaded, and a warning that | |
38 * runtime isn't loaded. | |
39 */ | 52 */ |
40 chrome.caterpillar.setError = function(message) { | 53 chrome.caterpillar.setError = function(message) { |
41 if (!chrome.runtime) { | |
42 console.warn('chrome.runtime not found; runtime errors may not be caught.'); | |
43 throw new Error(message); | |
44 } | |
45 chrome.runtime.lastError = { 'message': message }; | 54 chrome.runtime.lastError = { 'message': message }; |
46 }; | 55 }; |
47 | 56 |
48 }).call(this); | 57 }).call(this); |
OLD | NEW |