author | Tom Schuster <evilpies@gmail.com> |
Tue, 13 Jan 2015 21:18:33 +0100 | |
changeset 223622 | 409102634a1a2baf320623bec768b75e825e894e |
parent 223621 | 544315e9741c7bda04749f002a4eea921b6e1d27 |
child 223623 | 03d2076110a33af178390acf78aee7dc865b7737 |
push id | 28098 |
push user | kwierso@gmail.com |
push date | Wed, 14 Jan 2015 00:52:19 +0000 |
treeherder | mozilla-central@e978b8bc5c45 [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | mak |
bugs | 821724 |
milestone | 38.0a1 |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
--- a/browser/components/places/PlacesUIUtils.jsm +++ b/browser/components/places/PlacesUIUtils.jsm @@ -821,22 +821,22 @@ this.PlacesUIUtils = { this._openNodeIn(aNode, window.whereToOpenLink(aEvent, false, true), window); }, /** * Loads the node's URL in the appropriate tab or window or as a * web panel. * see also openUILinkIn */ - openNodeIn: function PUIU_openNodeIn(aNode, aWhere, aView) { + openNodeIn: function PUIU_openNodeIn(aNode, aWhere, aView, aPrivate) { let window = aView.ownerWindow; - this._openNodeIn(aNode, aWhere, window); + this._openNodeIn(aNode, aWhere, window, aPrivate); }, - _openNodeIn: function PUIU_openNodeIn(aNode, aWhere, aWindow) { + _openNodeIn: function PUIU_openNodeIn(aNode, aWhere, aWindow, aPrivate=false) { if (aNode && PlacesUtils.nodeIsURI(aNode) && this.checkURLSecurity(aNode, aWindow)) { let isBookmark = PlacesUtils.nodeIsBookmark(aNode); if (!PrivateBrowsingUtils.isWindowPrivate(aWindow)) { if (isBookmark) this.markPageAsFollowedBookmark(aNode.uri); else @@ -850,18 +850,20 @@ this.PlacesUIUtils = { .itemHasAnnotation(aNode.itemId, this.LOAD_IN_SIDEBAR_ANNO)) { let browserWin = this._getTopBrowserWin(); if (browserWin) { browserWin.openWebPanel(aNode.title, aNode.uri); return; } } } + aWindow.openUILinkIn(aNode.uri, aWhere, { - inBackground: Services.prefs.getBoolPref("browser.tabs.loadBookmarksInBackground") + inBackground: Services.prefs.getBoolPref("browser.tabs.loadBookmarksInBackground"), + private: aPrivate, }); } }, /** * Helper for guessing scheme from an url string. * Used to avoid nsIURI overhead in frequently called UI functions. *
--- a/browser/components/places/content/controller.js +++ b/browser/components/places/content/controller.js @@ -2,16 +2,18 @@ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ XPCOMUtils.defineLazyModuleGetter(this, "ForgetAboutSite", "resource://gre/modules/ForgetAboutSite.jsm"); XPCOMUtils.defineLazyModuleGetter(this, "NetUtil", "resource://gre/modules/NetUtil.jsm"); +XPCOMUtils.defineLazyModuleGetter(this, "PrivateBrowsingUtils", + "resource://gre/modules/PrivateBrowsingUtils.jsm"); // XXXmano: we should move most/all of these constants to PlacesUtils const ORGANIZER_ROOT_BOOKMARKS = "place:folder=BOOKMARKS_MENU&excludeItems=1&queryType=1"; // No change to the view, preserve current selection const RELOAD_ACTION_NOTHING = 0; // Inserting items new to the view, select the inserted rows const RELOAD_ACTION_INSERT = 1; @@ -173,16 +175,17 @@ PlacesController.prototype = { if (this._view.selType != "single") { let rootNode = this._view.result.root; if (rootNode.containerOpen && rootNode.childCount > 0) return true; } return false; case "placesCmd_open": case "placesCmd_open:window": + case "placesCmd_open:privatewindow": case "placesCmd_open:tab": var selectedNode = this._view.selectedNode; return selectedNode && PlacesUtils.nodeIsURI(selectedNode); case "placesCmd_new:folder": return this._canInsert(); case "placesCmd_new:bookmark": return this._canInsert(); case "placesCmd_new:separator": @@ -258,16 +261,19 @@ PlacesController.prototype = { this.selectAll(); break; case "placesCmd_open": PlacesUIUtils.openNodeIn(this._view.selectedNode, "current", this._view); break; case "placesCmd_open:window": PlacesUIUtils.openNodeIn(this._view.selectedNode, "window", this._view); break; + case "placesCmd_open:privatewindow": + PlacesUIUtils.openNodeIn(this._view.selectedNode, "window", this._view, true); + break; case "placesCmd_open:tab": PlacesUIUtils.openNodeIn(this._view.selectedNode, "tab", this._view); break; case "placesCmd_new:folder": this.newItem("folder"); break; case "placesCmd_new:bookmark": this.newItem("bookmark"); @@ -596,17 +602,20 @@ PlacesController.prototype = { var visibleItemsBeforeSep = false; var usableItemCount = 0; for (var i = 0; i < aPopup.childNodes.length; ++i) { var item = aPopup.childNodes[i]; if (item.localName != "menuseparator") { // We allow pasting into tag containers, so special case that. var hideIfNoIP = item.getAttribute("hideifnoinsertionpoint") == "true" && noIp && !(ip && ip.isTag && item.id == "placesContext_paste"); - var shouldHideItem = hideIfNoIP || !this._shouldShowMenuItem(item, metadata); + var hideIfPrivate = item.getAttribute("hideifprivatebrowsing") == "true" && + PrivateBrowsingUtils.isWindowPrivate(window); + var shouldHideItem = hideIfNoIP || hideIfPrivate || + !this._shouldShowMenuItem(item, metadata); item.hidden = item.disabled = shouldHideItem; if (!item.hidden) { visibleItemsBeforeSep = true; usableItemCount++; // Show the separator above the menu-item if any if (separator) { @@ -1685,16 +1694,17 @@ function goUpdatePlacesCommands() { var placesController = doGetPlacesControllerForCommand("placesCmd_open"); function updatePlacesCommand(aCommand) { goSetCommandEnabled(aCommand, placesController && placesController.isCommandEnabled(aCommand)); } updatePlacesCommand("placesCmd_open"); updatePlacesCommand("placesCmd_open:window"); + updatePlacesCommand("placesCmd_open:privatewindow"); updatePlacesCommand("placesCmd_open:tab"); updatePlacesCommand("placesCmd_new:folder"); updatePlacesCommand("placesCmd_new:bookmark"); updatePlacesCommand("placesCmd_new:separator"); updatePlacesCommand("placesCmd_show:info"); updatePlacesCommand("placesCmd_moveBookmarks"); updatePlacesCommand("placesCmd_reload"); updatePlacesCommand("placesCmd_sortBy:name");
--- a/browser/components/places/content/placesOverlay.xul +++ b/browser/components/places/content/placesOverlay.xul @@ -49,16 +49,18 @@ <commandset id="placesCommands" commandupdater="true" events="focus,sort,places" oncommandupdate="goUpdatePlacesCommands();"> <command id="placesCmd_open" oncommand="goDoPlacesCommand('placesCmd_open');"/> <command id="placesCmd_open:window" oncommand="goDoPlacesCommand('placesCmd_open:window');"/> + <command id="placesCmd_open:privatewindow" + oncommand="goDoPlacesCommand('placesCmd_open:privatewindow');"/> <command id="placesCmd_open:tab" oncommand="goDoPlacesCommand('placesCmd_open:tab');"/> <command id="placesCmd_new:bookmark" oncommand="goDoPlacesCommand('placesCmd_new:bookmark');"/> <command id="placesCmd_new:folder" oncommand="goDoPlacesCommand('placesCmd_new:folder');"/> <command id="placesCmd_new:separator" @@ -124,16 +126,23 @@ selectiontype="multiple" selection="link"/> <menuitem id="placesContext_open:newwindow" command="placesCmd_open:window" label="&cmd.open_window.label;" accesskey="&cmd.open_window.accesskey;" selectiontype="single" selection="link"/> + <menuitem id="placesContext_open:newprivatewindow" + command="placesCmd_open:privatewindow" + label="&cmd.open_private_window.label;" + accesskey="&cmd.open_private_window.accesskey;" + selectiontype="single" + selection="link" + hideifprivatebrowsing="true"/> <menuseparator id="placesContext_openSeparator"/> <menuitem id="placesContext_new:bookmark" command="placesCmd_new:bookmark" label="&cmd.new_bookmark.label;" accesskey="&cmd.new_bookmark.accesskey;" selectiontype="any" hideifnoinsertionpoint="true"/> <menuitem id="placesContext_new:folder"
--- a/browser/locales/en-US/chrome/browser/places/places.dtd +++ b/browser/locales/en-US/chrome/browser/places/places.dtd @@ -47,16 +47,18 @@ <!ENTITY cmd.delete.accesskey "D"> <!ENTITY cmd.deleteDomainData.label "Forget About This Site"> <!ENTITY cmd.deleteDomainData.accesskey "F"> <!ENTITY cmd.open.label "Open"> <!ENTITY cmd.open.accesskey "O"> <!ENTITY cmd.open_window.label "Open in a New Window"> <!ENTITY cmd.open_window.accesskey "N"> +<!ENTITY cmd.open_private_window.label "Open in a New Private Window"> +<!ENTITY cmd.open_private_window.accesskey "P"> <!ENTITY cmd.open_tab.label "Open in a New Tab"> <!ENTITY cmd.open_tab.accesskey "w"> <!ENTITY cmd.open_all_in_tabs.label "Open All in Tabs"> <!ENTITY cmd.open_all_in_tabs.accesskey "O"> <!ENTITY cmd.properties.label "Properties"> <!ENTITY cmd.properties.accesskey "i">
--- a/browser/themes/linux/browser.css +++ b/browser/themes/linux/browser.css @@ -528,16 +528,17 @@ menuitem:not([type]):not(.menuitem-toolt } #menu_pageInfo, #context-viewinfo, #context-viewframeinfo { list-style-image: url("moz-icon://stock/gtk-info?size=menu"); } +#placesContext_open\:newprivatewindow, #privateBrowsingItem { list-style-image: url("chrome://browser/skin/Privacy-16.png"); } #placesContext_show\:info { list-style-image: url("moz-icon://stock/gtk-properties?size=menu"); }
--- a/browser/themes/linux/places/places.css +++ b/browser/themes/linux/places/places.css @@ -195,16 +195,21 @@ menuitem[cmd="cmd_selectAll"][disabled] } #placesContext_open\:newwindow, menuitem[command="placesCmd_open:window"] { list-style-image: url("chrome://browser/skin/Toolbar-small.png"); -moz-image-region: rect(0px 80px 16px 64px); } +#placesContext_open\:newprivatewindow, +menuitem[command="placesCmd_open:privatewindow"] { + list-style-image: url("chrome://browser/skin/Privacy-16.png"); +} + #placesContext_open\:newtab, menuitem[command="placesCmd_open:tab"] { list-style-image: url("chrome://browser/skin/Toolbar-small.png"); -moz-image-region: rect(0px 64px 16px 48px); } #placesContext_show\:info, menuitem[command="placesCmd_show:info"] {