Bug 1204983 - Deprecate NewTabURL and forward calls to AboutNewTabService (r=florian,olivier)

--HG--
rename : browser/components/newtab/tests/xpcshell/test_NewTabURL.js => browser/components/newtab/tests/xpcshell/test_AboutNewTabService.js
This commit is contained in:
Christoph Kerschbaumer 2015-10-20 18:51:25 -07:00
parent 63983a5737
commit eee83aa5d8
14 changed files with 108 additions and 51 deletions

View File

@ -1653,7 +1653,7 @@
// and the URL is "about:newtab". We do not support preloading for
// custom newtab URLs.
return Services.prefs.getBoolPref("browser.newtab.preload") &&
!NewTabURL.overridden;
!aboutNewTabService.overridden;
]]>
</body>
</method>

View File

@ -6,6 +6,9 @@
function test() {
// initialization
waitForExplicitFinish();
let aboutNewTabService = Components.classes["@mozilla.org/browser/aboutnewtab-service;1"]
.getService(Components.interfaces.nsIAboutNewTabService);
let windowsToClose = [];
let newTab;
let newTabURL;
@ -18,7 +21,7 @@ function test() {
newTabURL = "about:privatebrowsing";
} else {
mode = "normal";
newTabURL = NewTabURL.get();
newTabURL = aboutNewTabService.newTabURL;
}
is(aWindow.gBrowser.currentURI.spec, newTabURL,

View File

@ -5,6 +5,8 @@
function test() {
//initialization
waitForExplicitFinish();
let aboutNewTabService = Components.classes["@mozilla.org/browser/aboutnewtab-service;1"]
.getService(Components.interfaces.nsIAboutNewTabService);
let newTabURL;
let testURL = "http://example.com/";
let mode;
@ -16,15 +18,15 @@ function test() {
newTabURL = "about:privatebrowsing";
} else {
mode = "normal";
newTabURL = NewTabURL.get();
newTabURL = aboutNewTabService.newTabURL;
}
// Check the new tab opened while in normal/private mode
is(aWindow.gBrowser.selectedBrowser.currentURI.spec, newTabURL,
"URL of NewTab should be " + newTabURL + " in " + mode + " mode");
// Set the custom newtab url
NewTabURL.override(testURL);
is(NewTabURL.get(), testURL, "Custom newtab url is set");
aboutNewTabService.newTabURL = testURL;
is(aboutNewTabService.newTabURL, testURL, "Custom newtab url is set");
// Open a newtab after setting the custom newtab url
openNewTab(aWindow, function () {
@ -32,8 +34,8 @@ function test() {
"URL of NewTab should be the custom url");
// Clear the custom url.
NewTabURL.reset();
is(NewTabURL.get(), "about:newtab", "No custom newtab url is set");
aboutNewTabService.resetNewTabURL();
is(aboutNewTabService.newTabURL, "about:newtab", "No custom newtab url is set");
aWindow.gBrowser.removeTab(aWindow.gBrowser.selectedTab);
aWindow.gBrowser.removeTab(aWindow.gBrowser.selectedTab);
@ -50,7 +52,7 @@ function test() {
}
// check whether any custom new tab url has been configured
ok(!NewTabURL.overridden, "No custom newtab url is set");
ok(!aboutNewTabService.overridden, "No custom newtab url is set");
// test normal mode
testOnWindow(false, function(aWindow) {

View File

@ -9,16 +9,17 @@ Components.utils.import("resource://gre/modules/XPCOMUtils.jsm");
Components.utils.import("resource://gre/modules/PrivateBrowsingUtils.jsm");
Components.utils.import("resource:///modules/RecentWindow.jsm");
XPCOMUtils.defineLazyModuleGetter(this, "NewTabURL",
"resource:///modules/NewTabURL.jsm");
XPCOMUtils.defineLazyServiceGetter(this, "aboutNewTabService",
"@mozilla.org/browser/aboutnewtab-service;1",
"nsIAboutNewTabService");
this.__defineGetter__("BROWSER_NEW_TAB_URL", () => {
if (PrivateBrowsingUtils.isWindowPrivate(window) &&
!PrivateBrowsingUtils.permanentPrivateBrowsing &&
!NewTabURL.overridden) {
!aboutNewTabService.overridden) {
return "about:privatebrowsing";
}
return NewTabURL.get();
return aboutNewTabService.newTabURL;
});
var TAB_DROP_TYPE = "application/x-moz-tabbrowser-tab";

View File

@ -1,5 +1,6 @@
XPCOMUtils.defineLazyModuleGetter(this, "NewTabURL",
"resource:///modules/NewTabURL.jsm");
XPCOMUtils.defineLazyServiceGetter(this, "aboutNewTabService",
"@mozilla.org/browser/aboutnewtab-service;1",
"nsIAboutNewTabService");
Cu.import("resource://gre/modules/ExtensionUtils.jsm");
var {
@ -246,7 +247,7 @@ extensions.registerAPI((extension, context) => {
createProperties = {};
}
let url = createProperties.url || NewTabURL.get();
let url = createProperties.url || aboutNewTabService.newTabURL;
url = extension.baseURI.resolve(url);
function createInWindow(window) {

View File

@ -1,5 +1,6 @@
XPCOMUtils.defineLazyModuleGetter(this, "NewTabURL",
"resource:///modules/NewTabURL.jsm");
XPCOMUtils.defineLazyServiceGetter(this, "aboutNewTabService",
"@mozilla.org/browser/aboutnewtab-service;1",
"nsIAboutNewTabService");
Cu.import("resource://gre/modules/ExtensionUtils.jsm");
var {
@ -95,7 +96,7 @@ extensions.registerAPI((extension, context) => {
args.AppendElement(mkstr(createData.url));
}
} else {
args.AppendElement(mkstr(NewTabURL.get()));
args.AppendElement(mkstr(aboutNewTabService.newTabURL));
}
let extraFeatures = "";

View File

@ -10,34 +10,34 @@ var Cu = Components.utils;
this.EXPORTED_SYMBOLS = [ "NewTabURL" ];
Components.utils.import("resource://gre/modules/Services.jsm");
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
XPCOMUtils.defineLazyServiceGetter(this, "aboutNewTabService",
"@mozilla.org/browser/aboutnewtab-service;1",
"nsIAboutNewTabService");
XPCOMUtils.defineLazyModuleGetter(this, "Deprecated",
"resource://gre/modules/Deprecated.jsm");
const DepecationURL = "https://bugzilla.mozilla.org/show_bug.cgi?id=1204983#c89";
this.NewTabURL = {
_url: "about:newtab",
_remoteUrl: "about:remote-newtab",
_overridden: false,
get: function() {
let output = this._url;
if (Services.prefs.getBoolPref("browser.newtabpage.remote")) {
output = this._remoteUrl;
}
return output;
Deprecated.warning("NewTabURL.get is deprecated, please query aboutNewTabService.newTabURL", DepecationURL);
return aboutNewTabService.newTabURL;
},
get overridden() {
return this._overridden;
Deprecated.warning("NewTabURL.overridden is deprecated, please query aboutNewTabService.overridden", DepecationURL);
return aboutNewTabService.overridden;
},
override: function(newURL) {
this._url = newURL;
this._overridden = true;
Services.obs.notifyObservers(null, "newtab-url-changed", this._url);
Deprecated.warning("NewTabURL.override is deprecated, please set aboutNewTabService.newTabURL", DepecationURL);
aboutNewTabService.newTabURL = newURL;
},
reset: function() {
this._url = "about:newtab";
this._overridden = false;
Services.obs.notifyObservers(null, "newtab-url-changed", this._url);
Deprecated.warning("NewTabURL.reset is deprecated, please use aboutNewTabService.resetNewTabURL()", DepecationURL);
aboutNewTabService.resetNewTabURL();
}
};

View File

@ -0,0 +1,39 @@
/* Any copyright is dedicated to the Public Domain.
* http://creativecommons.org/publicdomain/zero/1.0/
*/
"use strict";
Components.utils.import("resource://gre/modules/Services.jsm");
let aboutNewTabService = Components.classes["@mozilla.org/browser/aboutnewtab-service;1"]
.getService(Components.interfaces.nsIAboutNewTabService);
add_task(function* () {
Assert.equal(aboutNewTabService.newTabURL, "about:newtab", "Default newtab URL should be about:newtab");
let url = "http://example.com/";
let notificationPromise = promiseNewtabURLNotification(url);
aboutNewTabService.newTabURL = url;
yield notificationPromise;
Assert.ok(aboutNewTabService.overridden, "Newtab URL should be overridden");
Assert.equal(aboutNewTabService.newTabURL, url, "Newtab URL should be the custom URL");
notificationPromise = promiseNewtabURLNotification("about:newtab");
aboutNewTabService.resetNewTabURL();
yield notificationPromise;
Assert.ok(!aboutNewTabService.overridden, "Newtab URL should not be overridden");
Assert.equal(aboutNewTabService.newTabURL, "about:newtab", "Newtab URL should be the about:newtab");
// change newtab page to remote
Services.prefs.setBoolPref("browser.newtabpage.remote", true);
Assert.equal(aboutNewTabService.newTabURL, "about:remote-newtab", "Newtab URL should be the about:remote-newtab");
Assert.ok(!aboutNewTabService.overridden, "Newtab URL should not be overridden");
});
function promiseNewtabURLNotification(aNewURL) {
return new Promise(resolve => {
Services.obs.addObserver(function observer(aSubject, aTopic, aData) {
Services.obs.removeObserver(observer, aTopic);
Assert.equal(aData, aNewURL, "Data for newtab-url-changed notification should be new URL.");
resolve();
}, "newtab-url-changed", false);
});
}

View File

@ -4,6 +4,7 @@ tail =
firefox-appdir = browser
skip-if = toolkit == 'android' || toolkit == 'gonk'
[test_AboutNewTabService.js]
[test_NewTabURL.js]
[test_PlacesProvider.js]
[test_RemoteDirectoryLinksProvider.js]

View File

@ -2492,6 +2492,9 @@ AboutNewTabService.prototype = {
QueryInterface: XPCOMUtils.generateQI([Ci.nsIAboutNewTabService]),
get newTabURL() {
if (Services.prefs.getBoolPref("browser.newtabpage.remote")) {
return "about:remote-newtab";
}
return this._newTabURL;
},

View File

@ -6,6 +6,8 @@
"use strict";
Components.utils.import("resource://gre/modules/Promise.jsm", this);
let aboutNewTabService = Components.classes["@mozilla.org/browser/aboutnewtab-service;1"]
.getService(Components.interfaces.nsIAboutNewTabService);
function checkUrlbarFocus(win) {
let urlbar = win.gURLBar;
@ -28,14 +30,14 @@ add_task(function* () {
});
add_task(function* () {
NewTabURL.override("about:blank");
aboutNewTabService.newTabURL = "about:blank";
registerCleanupFunction(() => {
NewTabURL.reset();
aboutNewTabService.resetNewTabURL();
});
let win = yield openNewPrivateWindow();
checkUrlbarFocus(win);
win.close();
NewTabURL.reset();
aboutNewTabService.resetNewTabURL();
});

View File

@ -2,18 +2,20 @@
// -*- Mode: js; tab-width: 2; indent-tabs-mode: nil; js2-basic-offset: 2; js2-skip-preprocessor-directives: t; -*-
var { classes: Cc, interfaces: Ci, utils: Cu } = Components;
Cu.import("resource:///modules/NewTabURL.jsm");
Cu.import("resource://gre/modules/Services.jsm");
Cu.import("resource://gre/modules/Promise.jsm");
Cu.import("resource://gre/modules/XPCOMUtils.jsm");
let aboutNewTabService = Cc["@mozilla.org/browser/aboutnewtab-service;1"]
.getService(Ci.nsIAboutNewTabService);
var aboutBlankTab = null;
var Profiler = null;
var windowListener = {
onOpenWindow: function(aWindow) {
// Ensure we don't get tiles which contact the network
NewTabURL.override("about:blank")
aboutNewTabService.newTabURL = "about:blank";
// Wait for the window to finish loading
let window = aWindow.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowInternal || Ci.nsIDOMWindow);
@ -25,7 +27,7 @@ var windowListener = {
},
onCloseWindow: function(aWindow) {
NewTabURL.reset()
aboutNewTabService.resetNewTabURL();
},
onWindowTitleChange: function(aWindow, aTitle) {

View File

@ -3,7 +3,6 @@
<script>
const { classes: Cc, interfaces: Ci, utils: Cu } = Components;
Cu.import("resource://gre/modules/Services.jsm");
Cu.import("resource:///modules/NewTabURL.jsm");
function do_test(override) {
if (override || document.location.hash.indexOf("#auto") == 0) {
var mainWindow = window.QueryInterface(Components.interfaces.nsIInterfaceRequestor)

View File

@ -27,6 +27,9 @@
// X - tab drag
// X - tab remove from the middle
// X - Without add-tab button -> can be hidden while testing manually. in talos always with the button
let aboutNewTabService = Components.classes["@mozilla.org/browser/aboutnewtab-service;1"]
.getService(Components.interfaces.nsIAboutNewTabService);
function Tart() {
}
@ -471,7 +474,7 @@ Tart.prototype = {
var subtests = {
init: [ // This is called before each subtest, so it's safe to assume the following prefs:
function(){NewTabURL.override("about:blank");
function(){aboutNewTabService.newTabURL = "about:blank";
Services.prefs.setBoolPref("browser.newtabpage.enabled", true); // preview images if using about:newtab
Services.prefs.setBoolPref("browser.newtab.preload", false);
//Services.prefs.setCharPref("layout.css.devPixelsPerPx", "-1");
@ -483,7 +486,7 @@ Tart.prototype = {
restore: [
// Restore prefs which were modified during the test
function(){NewTabURL.reset();
function(){aboutNewTabService.resetNewTabURL();
Services.prefs.setBoolPref("browser.newtabpage.enabled", origNewtabEnabled);
Services.prefs.setBoolPref("browser.newtab.preload", origPreload);
Services.prefs.setCharPref("layout.css.devPixelsPerPx", origDpi);
@ -504,7 +507,7 @@ Tart.prototype = {
iconDpi1: [
function(){Services.prefs.setCharPref("layout.css.devPixelsPerPx", "1"); next();},
function(){NewTabURL.override("chrome://tart/content/blank.icon.html"); next();},
function(){aboutNewTabService.newTabURL = "chrome://tart/content/blank.icon.html"; next();},
function(){animate(0, addTab, next);},
function(){animate(0, closeCurrentTab, next);},
@ -514,7 +517,7 @@ Tart.prototype = {
iconDpi2: [
function(){Services.prefs.setCharPref("layout.css.devPixelsPerPx", "2"); next();},
function(){NewTabURL.override("chrome://tart/content/blank.icon.html"); next();},
function(){aboutNewTabService.newTabURL = "chrome://tart/content/blank.icon.html"; next();},
function(){animate(0, addTab, next);},
function(){animate(0, closeCurrentTab, next);},
@ -523,7 +526,7 @@ Tart.prototype = {
],
newtabNoPreload: [
function(){NewTabURL.override("about:newtab");
function(){aboutNewTabService.newTabURL = "about:newtab";
Services.prefs.setCharPref("layout.css.devPixelsPerPx", "-1");
Services.prefs.setBoolPref("browser.newtab.preload", false);
next();
@ -535,7 +538,7 @@ Tart.prototype = {
],
newtabYesPreload: [
function(){NewTabURL.override("about:newtab");
function(){aboutNewTabService.newTabURL = "about:newtab";
Services.prefs.setCharPref("layout.css.devPixelsPerPx", "-1");
Services.prefs.setBoolPref("browser.newtab.preload", true);
next();
@ -561,7 +564,7 @@ Tart.prototype = {
multi: [
function(){Services.prefs.setCharPref("layout.css.devPixelsPerPx", "1.0"); next();},
function(){NewTabURL.override("chrome://tart/content/blank.icon.html"); next();},
function(){aboutNewTabService.newTabURL = "chrome://tart/content/blank.icon.html"; next();},
function(){animate(0, addTab, next);},
function(){animate(0, addTab, next);},
@ -590,7 +593,7 @@ Tart.prototype = {
],
simpleFadeDpiCurrent: [
function(){NewTabURL.override("about:blank"); next();},
function(){aboutNewTabService.newTabURL = "about:blank"; next();},
function(){animate(0, addTab, next);},
function(){animate(rest, fadeout, next, true, "simpleFade-close-DPIcurrent", tabRefDuration);},
@ -599,7 +602,7 @@ Tart.prototype = {
],
iconFadeDpiCurrent: [
function(){NewTabURL.override("chrome://tart/content/blank.icon.html"); next();},
function(){aboutNewTabService.newTabURL = "chrome://tart/content/blank.icon.html"; next();},
function(){animate(0, addTab, next);},
function(){animate(rest, fadeout, next, true, "iconFade-close-DPIcurrent", tabRefDuration);},
@ -609,7 +612,7 @@ Tart.prototype = {
iconFadeDpi2: [
function(){Services.prefs.setCharPref("layout.css.devPixelsPerPx", "2"); next();},
function(){NewTabURL.override("chrome://tart/content/blank.icon.html"); next();},
function(){aboutNewTabService.newTabURL = "chrome://tart/content/blank.icon.html"; next();},
function(){animate(0, addTab, next);},
function(){animate(rest, fadeout, next, true, "iconFade-close-DPI2", tabRefDuration);},