summaryrefslogtreecommitdiffstats
path: root/browser/base/content/test/general/browser_keywordBookmarklets.js
diff options
context:
space:
mode:
Diffstat (limited to 'browser/base/content/test/general/browser_keywordBookmarklets.js')
-rw-r--r--browser/base/content/test/general/browser_keywordBookmarklets.js54
1 files changed, 54 insertions, 0 deletions
diff --git a/browser/base/content/test/general/browser_keywordBookmarklets.js b/browser/base/content/test/general/browser_keywordBookmarklets.js
new file mode 100644
index 000000000..5e94733fe
--- /dev/null
+++ b/browser/base/content/test/general/browser_keywordBookmarklets.js
@@ -0,0 +1,54 @@
+"use strict"
+
+add_task(function* test_keyword_bookmarklet() {
+ let bm = yield PlacesUtils.bookmarks.insert({ parentGuid: PlacesUtils.bookmarks.unfiledGuid,
+ title: "bookmarklet",
+ url: "javascript:'1';" });
+ let tab = gBrowser.selectedTab = gBrowser.addTab();
+ registerCleanupFunction (function* () {
+ gBrowser.removeTab(tab);
+ yield PlacesUtils.bookmarks.remove(bm);
+ });
+ yield promisePageShow();
+ let originalPrincipal = gBrowser.contentPrincipal;
+
+ function getPrincipalURI() {
+ return ContentTask.spawn(tab.linkedBrowser, null, function() {
+ return content.document.nodePrincipal.URI.spec;
+ });
+ }
+
+ let originalPrincipalURI = yield getPrincipalURI();
+
+ yield PlacesUtils.keywords.insert({ keyword: "bm", url: "javascript:'1';" })
+
+ // Enter bookmarklet keyword in the URL bar
+ gURLBar.value = "bm";
+ gURLBar.focus();
+ EventUtils.synthesizeKey("VK_RETURN", {});
+
+ yield promisePageShow();
+
+ let newPrincipalURI = yield getPrincipalURI();
+ is(newPrincipalURI, originalPrincipalURI, "content has the same principal");
+
+ // In e10s, null principals don't round-trip so the same null principal sent
+ // from the child will be a new null principal. Verify that this is the
+ // case.
+ if (tab.linkedBrowser.isRemoteBrowser) {
+ ok(originalPrincipal.isNullPrincipal && gBrowser.contentPrincipal.isNullPrincipal,
+ "both principals should be null principals in the parent");
+ } else {
+ ok(gBrowser.contentPrincipal.equals(originalPrincipal),
+ "javascript bookmarklet should inherit principal");
+ }
+});
+
+function* promisePageShow() {
+ return new Promise(resolve => {
+ gBrowser.selectedBrowser.addEventListener("pageshow", function listen() {
+ gBrowser.selectedBrowser.removeEventListener("pageshow", listen);
+ resolve();
+ });
+ });
+}