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 @@
+