From caabad8144a355e093260e08527e719b46fbeb4c Mon Sep 17 00:00:00 2001 From: Shane Caraveo Date: Wed, 15 Mar 2017 15:58:53 -0700 Subject: [PATCH] Bug 1339440 use frameUrl to match context menus on frames r=kmag MozReview-Commit-ID: LIlAZIP4HNx --HG-- extra : rebase_source : 2c66049fa29bbd7e64eae485a26f764ef0041903 --- .../components/extensions/ext-contextMenus.js | 2 +- .../extensions/test/browser/browser-common.ini | 1 + .../browser_ext_contextMenus_urlPatterns.js | 16 +++++++++++++++- .../extensions/test/browser/context.html | 1 + .../extensions/test/browser/context_frame.html | 8 ++++++++ .../components/extensions/test/browser/head.js | 12 +++++++++++- 6 files changed, 37 insertions(+), 3 deletions(-) create mode 100644 browser/components/extensions/test/browser/context_frame.html diff --git a/browser/components/extensions/ext-contextMenus.js b/browser/components/extensions/ext-contextMenus.js index 9283e821688c..2c7897324b1a 100644 --- a/browser/components/extensions/ext-contextMenus.js +++ b/browser/components/extensions/ext-contextMenus.js @@ -517,7 +517,7 @@ MenuItem.prototype = { } let docPattern = this.documentUrlMatchPattern; - let pageURI = Services.io.newURI(contextData.pageUrl); + let pageURI = Services.io.newURI(contextData["inFrame" ? "frameUrl" : "pageUrl"]); if (docPattern && !docPattern.matches(pageURI)) { return false; } diff --git a/browser/components/extensions/test/browser/browser-common.ini b/browser/components/extensions/test/browser/browser-common.ini index f4cc5c9d9744..3489c7971044 100644 --- a/browser/components/extensions/test/browser/browser-common.ini +++ b/browser/components/extensions/test/browser/browser-common.ini @@ -4,6 +4,7 @@ support-files = head_pageAction.js head_sessions.js context.html + context_frame.html ctxmenu-image.png context_tabs_onUpdated_page.html context_tabs_onUpdated_iframe.html diff --git a/browser/components/extensions/test/browser/browser_ext_contextMenus_urlPatterns.js b/browser/components/extensions/test/browser/browser_ext_contextMenus_urlPatterns.js index 7849b8778681..c29adb2bf844 100644 --- a/browser/components/extensions/test/browser/browser_ext_contextMenus_urlPatterns.js +++ b/browser/components/extensions/test/browser/browser_ext_contextMenus_urlPatterns.js @@ -52,10 +52,16 @@ add_task(function* () { // Test menu items using documentUrlPatterns. browser.contextMenus.create({ title: "documentUrlPatterns-patternMatches-contextAll", - documentUrlPatterns: ["*://*/*context.html"], + documentUrlPatterns: ["*://*/*context*.html"], contexts: ["all"], }); + browser.contextMenus.create({ + title: "documentUrlPatterns-patternMatches-contextFrame", + documentUrlPatterns: ["*://*/*context_frame.html"], + contexts: ["frame"], + }); + browser.contextMenus.create({ title: "documentUrlPatterns-patternMatches-contextImage", documentUrlPatterns: ["*://*/*context.html", "http://*/url-that-does-not-match"], @@ -249,6 +255,14 @@ add_task(function* () { yield confirmContextMenuItems(contextMenu, expected); yield closeContextMenu(); + contextMenu = yield openContextMenuInFrame("frame"); + expected = [ + ["documentUrlPatterns-patternMatches-contextAll", true], + ["documentUrlPatterns-patternMatches-contextFrame", true], + ]; + yield confirmContextMenuItems(contextMenu, expected); + yield closeContextMenu(); + yield extension.unload(); yield BrowserTestUtils.removeTab(tab1); }); diff --git a/browser/components/extensions/test/browser/context.html b/browser/components/extensions/test/browser/context.html index 1e25c6e851fd..95617ff54fbd 100644 --- a/browser/components/extensions/test/browser/context.html +++ b/browser/components/extensions/test/browser/context.html @@ -20,5 +20,6 @@

+