зеркало из https://github.com/mozilla/gecko-dev.git
Backed out changeset 19efa711bd54 (bug 1714749) for causing assertion failures at foundWebScheme. CLOSED TREE
This commit is contained in:
Родитель
2ec5e2abd7
Коммит
9d17bf1f4b
|
@ -11,12 +11,6 @@ ChromeUtils.defineModuleGetter(
|
||||||
"chrome://pocket/content/pktApi.jsm"
|
"chrome://pocket/content/pktApi.jsm"
|
||||||
);
|
);
|
||||||
|
|
||||||
ChromeUtils.defineModuleGetter(
|
|
||||||
this,
|
|
||||||
"SaveToPocket",
|
|
||||||
"chrome://pocket/content/SaveToPocket.jsm"
|
|
||||||
);
|
|
||||||
|
|
||||||
class AboutPocketParent extends JSWindowActorParent {
|
class AboutPocketParent extends JSWindowActorParent {
|
||||||
sendResponseMessageToPanel(messageId, panelId, payload) {
|
sendResponseMessageToPanel(messageId, panelId, payload) {
|
||||||
this.sendAsyncMessage(`${messageId}_response_${panelId}`, payload);
|
this.sendAsyncMessage(`${messageId}_response_${panelId}`, payload);
|
||||||
|
@ -136,7 +130,9 @@ class AboutPocketParent extends JSWindowActorParent {
|
||||||
pktApi.deleteItem(message.data.payload.itemId, {
|
pktApi.deleteItem(message.data.payload.itemId, {
|
||||||
success: () => {
|
success: () => {
|
||||||
resolve({ status: "success" });
|
resolve({ status: "success" });
|
||||||
SaveToPocket.itemDeleted();
|
this.browsingContext.topChromeWindow?.pktUI
|
||||||
|
.getPanelFrame()
|
||||||
|
.setAttribute("itemAdded", "false");
|
||||||
},
|
},
|
||||||
error: error => resolve({ status: "error", error }),
|
error: error => resolve({ status: "error", error }),
|
||||||
});
|
});
|
||||||
|
|
|
@ -45,8 +45,6 @@ var PocketCustomizableWidget = {
|
||||||
l10nId: "save-to-pocket-button",
|
l10nId: "save-to-pocket-button",
|
||||||
type: "view",
|
type: "view",
|
||||||
viewId: "PanelUI-savetopocket",
|
viewId: "PanelUI-savetopocket",
|
||||||
// This closes any open Pocket panels if you change tabs.
|
|
||||||
tabSpecific: true,
|
|
||||||
onViewShowing(aEvent) {
|
onViewShowing(aEvent) {
|
||||||
let panelView = aEvent.target;
|
let panelView = aEvent.target;
|
||||||
let panelNode = panelView.querySelector(
|
let panelNode = panelView.querySelector(
|
||||||
|
@ -65,6 +63,17 @@ var PocketCustomizableWidget = {
|
||||||
let panelNode = panelView.querySelector(
|
let panelNode = panelView.querySelector(
|
||||||
".PanelUI-savetopocket-container"
|
".PanelUI-savetopocket-container"
|
||||||
);
|
);
|
||||||
|
let frame = panelNode.querySelector("browser");
|
||||||
|
let browser = panelNode.ownerGlobal.gBrowser.selectedBrowser;
|
||||||
|
|
||||||
|
if (frame.getAttribute("itemAdded") == "true") {
|
||||||
|
SaveToPocket.innerWindowIDsByBrowser.set(
|
||||||
|
browser,
|
||||||
|
browser.innerWindowID
|
||||||
|
);
|
||||||
|
} else {
|
||||||
|
SaveToPocket.innerWindowIDsByBrowser.delete(browser);
|
||||||
|
}
|
||||||
|
|
||||||
panelNode.textContent = "";
|
panelNode.textContent = "";
|
||||||
SaveToPocket.updateToolbarNodeState(panelNode.ownerGlobal);
|
SaveToPocket.updateToolbarNodeState(panelNode.ownerGlobal);
|
||||||
|
@ -248,24 +257,6 @@ var SaveToPocket = {
|
||||||
Pocket._initPanelView(window);
|
Pocket._initPanelView(window);
|
||||||
},
|
},
|
||||||
|
|
||||||
// If an item is saved to Pocket, we cache the browser's inner window ID,
|
|
||||||
// so if you navigate to that tab again, we can check the ID
|
|
||||||
// and see if we need to update the toolbar icon.
|
|
||||||
itemSaved() {
|
|
||||||
const browserWindow = Services.wm.getMostRecentWindow("navigator:browser");
|
|
||||||
const browser = browserWindow.gBrowser.selectedBrowser;
|
|
||||||
SaveToPocket.innerWindowIDsByBrowser.set(browser, browser.innerWindowID);
|
|
||||||
},
|
|
||||||
|
|
||||||
// If an item is removed from Pocket, we remove that browser's inner window ID,
|
|
||||||
// so if you navigate to that tab again, we can check the ID
|
|
||||||
// and see if we need to update the toolbar icon.
|
|
||||||
itemDeleted() {
|
|
||||||
const browserWindow = Services.wm.getMostRecentWindow("navigator:browser");
|
|
||||||
const browser = browserWindow.gBrowser.selectedBrowser;
|
|
||||||
SaveToPocket.innerWindowIDsByBrowser.delete(browser);
|
|
||||||
},
|
|
||||||
|
|
||||||
updateElements(enabled) {
|
updateElements(enabled) {
|
||||||
// loop through windows and show/hide all our elements.
|
// loop through windows and show/hide all our elements.
|
||||||
for (let win of browserWindows()) {
|
for (let win of browserWindows()) {
|
||||||
|
|
|
@ -59,11 +59,6 @@ ChromeUtils.defineModuleGetter(
|
||||||
"pktApi",
|
"pktApi",
|
||||||
"chrome://pocket/content/pktApi.jsm"
|
"chrome://pocket/content/pktApi.jsm"
|
||||||
);
|
);
|
||||||
ChromeUtils.defineModuleGetter(
|
|
||||||
this,
|
|
||||||
"SaveToPocket",
|
|
||||||
"chrome://pocket/content/SaveToPocket.jsm"
|
|
||||||
);
|
|
||||||
ChromeUtils.defineModuleGetter(
|
ChromeUtils.defineModuleGetter(
|
||||||
this,
|
this,
|
||||||
"pktTelemetry",
|
"pktTelemetry",
|
||||||
|
@ -249,8 +244,6 @@ var pktUI = (function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function onShowSignup() {
|
function onShowSignup() {
|
||||||
// Ensure opening the signup panel clears the icon state from any previous sessions.
|
|
||||||
SaveToPocket.itemDeleted();
|
|
||||||
// A successful button click, for logged out users.
|
// A successful button click, for logged out users.
|
||||||
pktTelemetry.sendStructuredIngestionEvent(
|
pktTelemetry.sendStructuredIngestionEvent(
|
||||||
pktTelemetry.createPingPayload({
|
pktTelemetry.createPingPayload({
|
||||||
|
@ -280,6 +273,7 @@ var pktUI = (function() {
|
||||||
|
|
||||||
function onShowSaved() {
|
function onShowSaved() {
|
||||||
var saveLinkMessageId = "PKT_saveLink";
|
var saveLinkMessageId = "PKT_saveLink";
|
||||||
|
getPanelFrame().setAttribute("itemAdded", "false");
|
||||||
|
|
||||||
// Send error message for invalid url
|
// Send error message for invalid url
|
||||||
if (!isValidURL()) {
|
if (!isValidURL()) {
|
||||||
|
@ -338,7 +332,7 @@ var pktUI = (function() {
|
||||||
_panelId,
|
_panelId,
|
||||||
successResponse
|
successResponse
|
||||||
);
|
);
|
||||||
SaveToPocket.itemSaved();
|
getPanelFrame().setAttribute("itemAdded", "true");
|
||||||
|
|
||||||
getAndShowRecsForItem(item, {
|
getAndShowRecsForItem(item, {
|
||||||
success(data) {
|
success(data) {
|
||||||
|
@ -532,11 +526,16 @@ var pktUI = (function() {
|
||||||
}
|
}
|
||||||
|
|
||||||
function closePanel() {
|
function closePanel() {
|
||||||
// The panel frame doesn't exist until the Pocket panel is showing.
|
getPanel().hidePopup();
|
||||||
// So we ensure it is open before attempting to hide it.
|
}
|
||||||
getPanelFrame()
|
|
||||||
?.closest("panel")
|
function getPanel() {
|
||||||
?.hidePopup();
|
var frame = getPanelFrame();
|
||||||
|
var panel = frame;
|
||||||
|
while (panel && panel.localName != "panel") {
|
||||||
|
panel = panel.parentNode;
|
||||||
|
}
|
||||||
|
return panel;
|
||||||
}
|
}
|
||||||
|
|
||||||
var toolbarPanelFrame;
|
var toolbarPanelFrame;
|
||||||
|
|
|
@ -7,4 +7,3 @@ support-files =
|
||||||
[browser_pocket_context_menu_action.js]
|
[browser_pocket_context_menu_action.js]
|
||||||
[browser_pocket_panel.js]
|
[browser_pocket_panel.js]
|
||||||
[browser_pocket_home_panel.js]
|
[browser_pocket_home_panel.js]
|
||||||
[browser_pocket_button_icon_state.js]
|
|
||||||
|
|
|
@ -1,66 +0,0 @@
|
||||||
/* Any copyright is dedicated to the Public Domain.
|
|
||||||
* http://creativecommons.org/publicdomain/zero/1.0/ */
|
|
||||||
"use strict";
|
|
||||||
|
|
||||||
ChromeUtils.defineModuleGetter(
|
|
||||||
this,
|
|
||||||
"SaveToPocket",
|
|
||||||
"chrome://pocket/content/SaveToPocket.jsm"
|
|
||||||
);
|
|
||||||
|
|
||||||
add_task(async function() {
|
|
||||||
let tab = await BrowserTestUtils.openNewForegroundTab(
|
|
||||||
gBrowser,
|
|
||||||
"https://example.com/browser/browser/components/pocket/test/test.html"
|
|
||||||
);
|
|
||||||
|
|
||||||
// We're faking a logged in test, so initially we need to fake the logged in state.
|
|
||||||
const loggedInStub = sinon
|
|
||||||
.stub(pktApi, "isUserLoggedIn")
|
|
||||||
.callsFake(() => true);
|
|
||||||
// Also we cannot actually make remote requests, so make sure we stub any functions
|
|
||||||
// we need that that make requests to api.getpocket.com.
|
|
||||||
const addLinkStub = sinon.stub(pktApi, "addLink").callsFake(() => true);
|
|
||||||
|
|
||||||
info("clicking on pocket button in toolbar");
|
|
||||||
let pocketButton = document.getElementById("save-to-pocket-button");
|
|
||||||
// The panel is created on the fly, so we can't simply wait for focus
|
|
||||||
// inside it.
|
|
||||||
let pocketPanelShowing = BrowserTestUtils.waitForEvent(
|
|
||||||
document,
|
|
||||||
"popupshown",
|
|
||||||
true
|
|
||||||
);
|
|
||||||
pocketButton.click();
|
|
||||||
await pocketPanelShowing;
|
|
||||||
|
|
||||||
// Because we're not actually logged into a remote Pocket account,
|
|
||||||
// and because we're not actually saving anything,
|
|
||||||
// we fake it, instead, by calling the function we care about.
|
|
||||||
SaveToPocket.itemSaved();
|
|
||||||
// This fakes the button from just opened, to also pocketed,
|
|
||||||
// we currently expect both from a save.
|
|
||||||
SaveToPocket.updateToolbarNodeState(window);
|
|
||||||
|
|
||||||
// The Pocket button should be set to open.
|
|
||||||
is(pocketButton.open, true, "Pocket button is open");
|
|
||||||
is(pocketButton.getAttribute("pocketed"), "true", "Pocket item is pocketed");
|
|
||||||
|
|
||||||
let pocketPanelHidden = BrowserTestUtils.waitForEvent(
|
|
||||||
document,
|
|
||||||
"popuphidden"
|
|
||||||
);
|
|
||||||
|
|
||||||
// Mochitests start with an open tab, so use that to trigger a tab change.
|
|
||||||
await BrowserTestUtils.switchTab(gBrowser, gBrowser.tabs[0]);
|
|
||||||
|
|
||||||
await pocketPanelHidden;
|
|
||||||
|
|
||||||
// Opening a new tab should have closed the Pocket panel, icon should no longer be red.
|
|
||||||
is(pocketButton.open, false, "Pocket button is closed");
|
|
||||||
is(pocketButton.getAttribute("pocketed"), "", "Pocket item is not pocketed");
|
|
||||||
|
|
||||||
loggedInStub.restore();
|
|
||||||
addLinkStub.restore();
|
|
||||||
BrowserTestUtils.removeTab(tab);
|
|
||||||
});
|
|
Загрузка…
Ссылка в новой задаче