f2f75e6e2d607e8a123e2444c2fd9fe9a4e276c8: Bug 1287007 - Fix "onclick" in contextMenus, to child. r=billm
Rob Wu <rob@robwu.nl> - Mon, 12 Sep 2016 18:26:03 -0700 - rev 361980
Push 6795 by jlund@mozilla.com at Mon, 23 Jan 2017 14:19:46 +0000
Bug 1287007 - Fix "onclick" in contextMenus, to child. r=billm Main thing: Making contextMenus implementation webext-oop compatible. Preparation: - Add getParentEvent to ChildAPIManager to allow use of remote events. - Introduce `addon_parent_only` to "allowedContexts" to only generate a schema API in the main process. - Do not fill in `null` for missing keys if the schema declares a key as `"optional": "omit-key-if-missing"`. This is needed for the second point in the next list. Drive-by fixes: - Ensure that the "onclick" handler is erased when a context closes. - Do not clear the "onclick" handler in `contextMenus.update` if the onclick key has been omitted (parity with Chrome). - Remove some unnecessary `Promise.resolve()` - Add extensive set of tests that check the behavior of the contextMenus APIs with regards to the onclick attribute in various scenarios. MozReview-Commit-ID: A5f3AUQzU8T
4c43afedf60f8852f0a1729123af998da103f50b: Bug 1287007 - Move part of browserAction and pageAction to child r=billm
Rob Wu <rob@robwu.nl> - Sun, 11 Sep 2016 04:18:35 -0700 - rev 361979
Push 6795 by jlund@mozilla.com at Mon, 23 Jan 2017 14:19:46 +0000
Bug 1287007 - Move part of browserAction and pageAction to child r=billm And remove redundant `Promise.resolve()` because it is the default for async functions. setIcon is not supported on Android, so there was no need to change mobile/android/components/extensions/ext-pageAction.js. MozReview-Commit-ID: 94ebaJFxLAi
09fa6078095c96453fb793ee97755cc3c66a986c: Bug 1287007 - Set parent cloneScope to child cloneScope r=billm
Rob Wu <rob@robwu.nl> - Sun, 11 Sep 2016 03:10:21 -0700 - rev 361978
Push 6795 by jlund@mozilla.com at Mon, 23 Jan 2017 14:19:46 +0000
Bug 1287007 - Set parent cloneScope to child cloneScope r=billm This is only to help with migration. This change allows all APIs to behave identical regardless of whether the API is proxied. Change cloneScope to be a getter because cloneScope is `this.contentWindow`, which may be nulled when the context navigates away (but stays in the bfcache). Any API that is not proxied must have an identical clone scope to make sure that properties such as toJSON (in the native messaging stringifier) and ArrayBuffer (in webRequest as requestBody) are visible to the caller. MozReview-Commit-ID: 9aT3SUBieHK
54c25251246826c4bca1af8208ddbb0dcb4da0b2: Bug 1287007 - Track message manager / browser swaps r=billm
Rob Wu <rob@robwu.nl> - Fri, 09 Sep 2016 23:04:04 -0700 - rev 361977
Push 6795 by jlund@mozilla.com at Mon, 23 Jan 2017 14:19:46 +0000
Bug 1287007 - Track message manager / browser swaps r=billm Neither the message manager nor the XUL browser is guaranteed to be constant during a ProxyContext's lifetime. Add a new class to follow the `<browser>` belonging to the current docshell and update the ProxyContext properties as needed. NOTE: The `BrowserDocshellFollower` class assumes that docshells are swapped using `newBrowser.swapDocShells(oldBrowser)`. If this assumption turns out to be false, then the tracker will lose track of the `<browser>`. See bugzil.la/1301837 for more details. Also, renamed `messageManager` to `currentMessageManager` because the `messageManager` property is overwritten by the `setContentWindow` hack in WannabeChildAPIManager in ExtensionChild.jsm. browser/components/extensions/test/browser/browser_ext_currentWindow.js provides test coverage for this feature once the `test` API goes through a ChildAPIManager instead of directly through a WannabeChildAPIManager. Why? Because that test calls `test.onMessage.addListener` in the script that is loaded in a popup page. Popups are loaded in two stages: First the content is preloaded in a `<browser>`, and then when the popup is shown a new `<browser>` is created and the docshells are swapped. When the script runs while the popup script is being preloaded, the `ParentAPIManager` receives the IPC message with the target set to the `<browser>` used for preloading. When the API response is ready, `target.messageManager.sendAsyncMessage` is called. Meanwhile the docshells have been swapped, the message manager is gone and this fails. With this patch, the message manager is correctly tracked and this test passes. MozReview-Commit-ID: C5Z0ZJRXKyw
709a07bf036212cc6f667eca11b1ae9d585c79d0: Bug 1287007 - Use frame script to initialize background/popup page r=billm
Rob Wu <rob@robwu.nl> - Thu, 08 Sep 2016 20:41:43 -0700 - rev 361976
Push 6795 by jlund@mozilla.com at Mon, 23 Jan 2017 14:19:46 +0000
Bug 1287007 - Use frame script to initialize background/popup page r=billm MozReview-Commit-ID: 8Di1nTnwpbU
fca5d1ec8c26491ea887e2e6f80cac8a3e32419b: Bug 1287007 - Only close extension tabs upon shutdown r=billm
Rob Wu <rob@robwu.nl> - Thu, 08 Sep 2016 19:02:56 -0700 - rev 361975
Push 6795 by jlund@mozilla.com at Mon, 23 Jan 2017 14:19:46 +0000
Bug 1287007 - Only close extension tabs upon shutdown r=billm In one of the previous patches, the viewType of popup changed from "popup" to "tab". As a result it was closed by the `page-shutdown` event handler in ext-tabs.js. This prevents that from happening. Also added a test that checks whether the options page type is a tab, to prevent future regressions. MozReview-Commit-ID: 3Qcf08PgNqb
817299c12d6d608a2e5c6a2badc2f952414e43ab: Bug 1287007 - Set the principal in ChildAPIManager r=billm
Rob Wu <rob@robwu.nl> - Wed, 07 Sep 2016 20:35:39 -0700 - rev 361974
Push 6795 by jlund@mozilla.com at Mon, 23 Jan 2017 14:19:46 +0000
Bug 1287007 - Set the principal in ChildAPIManager r=billm The `browser.downloads.download` API takes a "url" parameter. The schema file at downloads.json defines the type to be "url". This means that the parameter is checked with `context.checkLoadURL(url)` in Schemas.jsm. This method uses the principal of the object that was passed to `Schemas.inject`. Currently, this works just fine because the `schemaWrapper` in Extension.jsm returns the context's principal. But when we move to using the ChildAPIManager, the principal is not defined and Schemas.jsm will fall back to a Null principal. As a result, the test_ext_downloads_download.js fails because the blob:-URL with the extension origin cannot be loaded by a null principal. To fix this, the context's principal must be set. MozReview-Commit-ID: FmpqYfPemyY
37414d1fd5efe1e5771d50f23f0797fdc967ac3c: Bug 1287007 - Remove dead code r=billm
Rob Wu <rob@robwu.nl> - Tue, 06 Sep 2016 15:50:50 -0700 - rev 361973
Push 6795 by jlund@mozilla.com at Mon, 23 Jan 2017 14:19:46 +0000
Bug 1287007 - Remove dead code r=billm MozReview-Commit-ID: LtuKY5DjB68
f9da44ff592d2a570c2f501b9e8588351d105aee: Bug 1287007 - Use child's Extension instead of the process' r=billm
Rob Wu <rob@robwu.nl> - Tue, 06 Sep 2016 15:31:33 -0700 - rev 361972
Push 6795 by jlund@mozilla.com at Mon, 23 Jan 2017 14:19:46 +0000
Bug 1287007 - Use child's Extension instead of the process' r=billm MozReview-Commit-ID: 9o8tOuUbchn
e3514b399ec46ced8c47c24ed69d15b9cac9c591: Bug 1287007 - Fix test_ext_api_permissions.js r=billm
Rob Wu <rob@robwu.nl> - Wed, 07 Sep 2016 17:10:33 -0700 - rev 361971
Push 6795 by jlund@mozilla.com at Mon, 23 Jan 2017 14:19:46 +0000
Bug 1287007 - Fix test_ext_api_permissions.js r=billm "extension.views" will only be available in content, so use the "proxy-context-load" event to detect new views. MozReview-Commit-ID: K86Be5IDk42
6b9a398be651f28216e4693a6151776d73f44156: Bug 1287007 - Use IPC to share viewType, tabId and windowId r=billm
Rob Wu <rob@robwu.nl> - Tue, 06 Sep 2016 15:25:10 -0700 - rev 361970
Push 6795 by jlund@mozilla.com at Mon, 23 Jan 2017 14:19:46 +0000
Bug 1287007 - Use IPC to share viewType, tabId and windowId r=billm Accessing <browser> in ContentChild does not work when extensions run in a separate process. MozReview-Commit-ID: EK0aOYeGaZ5
3d18af0cc52663e03e7c81d3646cc3baf8d2b3f1: Bug 1287007 - Fix timing issue in browser_ext_tabs_getCurrent.js r=billm
Rob Wu <rob@robwu.nl> - Tue, 06 Sep 2016 14:45:58 -0700 - rev 361969
Push 6795 by jlund@mozilla.com at Mon, 23 Jan 2017 14:19:46 +0000
Bug 1287007 - Fix timing issue in browser_ext_tabs_getCurrent.js r=billm browser.test.sendMessage does not have enough time to finish before tabs.remove since test moved to ChildAPIManager for extension pages, causing the test to time out. MozReview-Commit-ID: 1mmGZOi9fzm
9746d5da8a517c1e3d47d3a87f867c82ed1c576a: Bug 1287007 - Move extension context initialization to ExtensionContent r=billm
Rob Wu <rob@robwu.nl> - Mon, 05 Sep 2016 23:50:11 -0700 - rev 361968
Push 6795 by jlund@mozilla.com at Mon, 23 Jan 2017 14:19:46 +0000
Bug 1287007 - Move extension context initialization to ExtensionContent r=billm This is a simple move of ExtensionContext creation logic to ExtensionChild. Before the change, ExtensionContext was initialized as follows: 1. (ext-backgroundPage.js) Create background page 2. (Extension.jsm) document-element-inserted observed. 3. (Extension.jsm) new ExtensionContext + unload observer. After this commit: 1. (ext-backgroundPage.js) Create background page 2. (ext-backgroundPage.js) emit extension-browser-inserted event 3. (Extension.jsm) Pass global to ExtensionContent + unload listener. 4. (ExtensionContent.jsm) document-element-inserted observed. 5. (ExtensionChild.jsm) new ExtensionContext The next step is to use frame scripts and synchronize state. MozReview-Commit-ID: K6mPdq7KQ2T
f86e5930ef497a5cdce73f04d3f16fa73871d144: Bug 1287007 - Move extension.getViews to child r=billm
Rob Wu <rob@robwu.nl> - Wed, 07 Sep 2016 22:54:07 -0700 - rev 361967
Push 6795 by jlund@mozilla.com at Mon, 23 Jan 2017 14:19:46 +0000
Bug 1287007 - Move extension.getViews to child r=billm MozReview-Commit-ID: SG2pmulzaP
1ed5b81ab606d9c1c9cf737b9d6ffbb50378799f: Bug 1287007 - Move background page API logic to child r=billm
Rob Wu <rob@robwu.nl> - Mon, 05 Sep 2016 22:34:44 -0700 - rev 361966
Push 6795 by jlund@mozilla.com at Mon, 23 Jan 2017 14:19:46 +0000
Bug 1287007 - Move background page API logic to child r=billm MozReview-Commit-ID: iGROahhkhn
cb7fa050a6bf4cf499a165b2b9ebe7f33c06f518: Bug 1287007 - Rename "context.type" to "context.viewType" r=billm
Rob Wu <rob@robwu.nl> - Mon, 05 Sep 2016 22:26:56 -0700 - rev 361965
Push 6795 by jlund@mozilla.com at Mon, 23 Jan 2017 14:19:46 +0000
Bug 1287007 - Rename "context.type" to "context.viewType" r=billm "viewType" is more easily searchable and not as ambiguous as "type". MozReview-Commit-ID: 8sG4qagFCBu
642f1b1afa902ddf5f9043bcd799feede7e67396: Bug 1287007 - Introduce ChildAPIManager to addon code r=billm
Rob Wu <rob@robwu.nl> - Mon, 05 Sep 2016 18:57:38 -0700 - rev 361964
Push 6795 by jlund@mozilla.com at Mon, 23 Jan 2017 14:19:46 +0000
Bug 1287007 - Introduce ChildAPIManager to addon code r=billm This is the bare minimum to separate the generation of addon_parent and addon_child APIs. Now it is possible to have methods with the same name but different implementations in the parent and child. Many APIs are not compatible with the proxied API implementation, so they temporarily fall back to directly invoking the parent API, just as before this commit. MozReview-Commit-ID: fwuZUvD8tY
d6ac05fb1b56cfc90ba785a9c65095bf71cf6dc7: Bug 1287007 - Do not neuter error messages from the same principal r=billm
Rob Wu <rob@robwu.nl> - Mon, 05 Sep 2016 17:04:28 -0700 - rev 361963
Push 6795 by jlund@mozilla.com at Mon, 23 Jan 2017 14:19:46 +0000
Bug 1287007 - Do not neuter error messages from the same principal r=billm With an upcoming change that introduces another ProxyContext, errors from a different scope may bubble up. These messages should be reported, not replaced with "An unexpected error occurred". MozReview-Commit-ID: ByUktVkhDyx
5df860aa9c9ca508841e1a0c7d96ab389fda8ea3: Bug 1287007 - Move ExtensionContext to separate file r=billm
Rob Wu <rob@robwu.nl> - Mon, 05 Sep 2016 00:15:18 -0700 - rev 361962
Push 6795 by jlund@mozilla.com at Mon, 23 Jan 2017 14:19:46 +0000
Bug 1287007 - Move ExtensionContext to separate file r=billm This is just a mechanical change, literally nothing more than cutting ExtensionContext from Extension.jsm, pasting it in ExtensionChild.jsm and adding the minimal imoort boilerplate. MozReview-Commit-ID: 5uVt1IOdEFU
bfb7562c240678e3a77695c5e370d2ebe73b7c48: Bug 1287007 - Fix cross-process browser.storage.local serialization r=billm
Rob Wu <rob@robwu.nl> - Sun, 04 Sep 2016 19:19:17 -0700 - rev 361961
Push 6795 by jlund@mozilla.com at Mon, 23 Jan 2017 14:19:46 +0000
Bug 1287007 - Fix cross-process browser.storage.local serialization r=billm - Lazily initialize file IO-specific stuff in ExtensionStorage.jsm, and limit this work to the main process. - Add local versions of the `storage.local.get` and `storage.local.set` implementations that perform sanitization (without the change, values are improperly serialized over IPC). - Copied the `backgroundScript` test from xpcshell/test_ext_storage.js to mochitest/test_ext_storage_content.html because they should behave identical. Before this patch the test failed due to IPC serialization issues, now the test passes. Note that the old test also passes with the changes. MozReview-Commit-ID: 8J8CCdwMACN
(0) -300000 -100000 -30000 -10000 -3000 -1000 -300 -100 -50 -20 +20 +50 +100 +300 +1000 +3000 +10000 +30000 +100000 tip