forked from mirrors/gecko-dev
Bug 1680865 - Unfocusing Urlbar after any touchbar input. r=dao
Differential Revision: https://phabricator.services.mozilla.com/D174755
This commit is contained in:
parent
079f16abde
commit
f57e4a82a4
3 changed files with 53 additions and 4 deletions
|
|
@ -85,19 +85,28 @@ var gBuiltInInputs = {
|
||||||
title: "back",
|
title: "back",
|
||||||
image: "chrome://browser/skin/back.svg",
|
image: "chrome://browser/skin/back.svg",
|
||||||
type: kInputTypes.BUTTON,
|
type: kInputTypes.BUTTON,
|
||||||
callback: () => execCommand("Browser:Back"),
|
callback: () => {
|
||||||
|
lazy.touchBarHelper.unfocusUrlbar();
|
||||||
|
execCommand("Browser:Back");
|
||||||
|
},
|
||||||
},
|
},
|
||||||
Forward: {
|
Forward: {
|
||||||
title: "forward",
|
title: "forward",
|
||||||
image: "chrome://browser/skin/forward.svg",
|
image: "chrome://browser/skin/forward.svg",
|
||||||
type: kInputTypes.BUTTON,
|
type: kInputTypes.BUTTON,
|
||||||
callback: () => execCommand("Browser:Forward"),
|
callback: () => {
|
||||||
|
lazy.touchBarHelper.unfocusUrlbar();
|
||||||
|
execCommand("Browser:Forward");
|
||||||
|
},
|
||||||
},
|
},
|
||||||
Reload: {
|
Reload: {
|
||||||
title: "reload",
|
title: "reload",
|
||||||
image: "chrome://global/skin/icons/reload.svg",
|
image: "chrome://global/skin/icons/reload.svg",
|
||||||
type: kInputTypes.BUTTON,
|
type: kInputTypes.BUTTON,
|
||||||
callback: () => execCommand("Browser:Reload"),
|
callback: () => {
|
||||||
|
lazy.touchBarHelper.unfocusUrlbar();
|
||||||
|
execCommand("Browser:Reload");
|
||||||
|
},
|
||||||
},
|
},
|
||||||
Home: {
|
Home: {
|
||||||
title: "home",
|
title: "home",
|
||||||
|
|
@ -153,7 +162,7 @@ var gBuiltInInputs = {
|
||||||
title: "open-location",
|
title: "open-location",
|
||||||
image: "chrome://global/skin/icons/search-glass.svg",
|
image: "chrome://global/skin/icons/search-glass.svg",
|
||||||
type: kInputTypes.MAIN_BUTTON,
|
type: kInputTypes.MAIN_BUTTON,
|
||||||
callback: () => execCommand("Browser:OpenLocation"),
|
callback: () => lazy.touchBarHelper.toggleFocusUrlbar(),
|
||||||
},
|
},
|
||||||
// This is a special-case `type: kInputTypes.SCRUBBER` element.
|
// This is a special-case `type: kInputTypes.SCRUBBER` element.
|
||||||
// Scrubbers are not yet generally implemented.
|
// Scrubbers are not yet generally implemented.
|
||||||
|
|
@ -316,6 +325,21 @@ class TouchBarHelper {
|
||||||
return TouchBarHelper.window.gURLBar.focused;
|
return TouchBarHelper.window.gURLBar.focused;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
toggleFocusUrlbar() {
|
||||||
|
if (this.isUrlbarFocused) {
|
||||||
|
this.unfocusUrlbar();
|
||||||
|
} else {
|
||||||
|
execCommand("Browser:OpenLocation");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
unfocusUrlbar() {
|
||||||
|
if (!this.isUrlbarFocused) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
TouchBarHelper.window.gURLBar.blur();
|
||||||
|
}
|
||||||
|
|
||||||
static get baseWindow() {
|
static get baseWindow() {
|
||||||
return TouchBarHelper.window
|
return TouchBarHelper.window
|
||||||
? TouchBarHelper.window.docShell.treeOwner.QueryInterface(
|
? TouchBarHelper.window.docShell.treeOwner.QueryInterface(
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ XPCOMUtils.defineLazyServiceGetter(
|
||||||
"@mozilla.org/widget/touchbarhelper;1",
|
"@mozilla.org/widget/touchbarhelper;1",
|
||||||
"nsITouchBarHelper"
|
"nsITouchBarHelper"
|
||||||
);
|
);
|
||||||
|
|
||||||
XPCOMUtils.defineLazyServiceGetter(
|
XPCOMUtils.defineLazyServiceGetter(
|
||||||
this,
|
this,
|
||||||
"TouchBarInput",
|
"TouchBarInput",
|
||||||
|
|
@ -119,6 +120,20 @@ add_task(async function updateMainButtonInFullscreen() {
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
add_task(async function toggleUrlbarFocusOnOpenLocation() {
|
||||||
|
Assert.equal(TouchBarHelper.isUrlbarFocused, false, "Urlbar is unfocused.");
|
||||||
|
TouchBarHelper.toggleFocusUrlbar();
|
||||||
|
Assert.equal(TouchBarHelper.isUrlbarFocused, true, "Urlbar is unfocused.");
|
||||||
|
TouchBarHelper.toggleFocusUrlbar();
|
||||||
|
});
|
||||||
|
|
||||||
|
add_task(async function unfocusUrlbar() {
|
||||||
|
window.gURLBar.focus();
|
||||||
|
Assert.equal(TouchBarHelper.isUrlbarFocused, true, "Urlbar is unfocused.");
|
||||||
|
TouchBarHelper.unfocusUrlbar();
|
||||||
|
Assert.equal(TouchBarHelper.isUrlbarFocused, false, "Urlbar is unfocused.");
|
||||||
|
});
|
||||||
|
|
||||||
function waitForFullScreenState(browser, state) {
|
function waitForFullScreenState(browser, state) {
|
||||||
info("inside waitforfullscreenstate");
|
info("inside waitforfullscreenstate");
|
||||||
return new Promise(resolve => {
|
return new Promise(resolve => {
|
||||||
|
|
|
||||||
|
|
@ -29,6 +29,16 @@ interface nsITouchBarHelper : nsISupports
|
||||||
*/
|
*/
|
||||||
readonly attribute boolean isUrlbarFocused;
|
readonly attribute boolean isUrlbarFocused;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Toggles Urlbar focus.
|
||||||
|
*/
|
||||||
|
void toggleFocusUrlbar();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Unfocuses the Urlbar.
|
||||||
|
*/
|
||||||
|
void unfocusUrlbar();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns all available Touch Bar Inputs in an nsIArray
|
* Returns all available Touch Bar Inputs in an nsIArray
|
||||||
* of nsITouchBarInput objects.
|
* of nsITouchBarInput objects.
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue