Bug 491759 - Clear geolocation token when exiting private browsing; r=dougt,ehsan

This commit is contained in:
Nochum Sossonko 2009-11-06 19:05:52 -05:00
parent 07bfcef872
commit 99b98e5ab4
3 changed files with 74 additions and 17 deletions

View File

@ -365,6 +365,10 @@ PrivateBrowsingService.prototype = {
getService(Ci.nsIHttpAuthManager);
authMgr.clearAll();
try {
this._prefs.deleteBranch("geo.wifi.access_token.");
} catch (ex) {}
if (!this._inPrivateBrowsing) {
// Clear the error console
let consoleService = Cc["@mozilla.org/consoleservice;1"].

View File

@ -0,0 +1,69 @@
/* ***** BEGIN LICENSE BLOCK *****
* Version: MPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Mozilla Public License Version
* 1.1 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
* http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is Private Browsing Tests.
*
* The Initial Developer of the Original Code is
* Nochum Sossonko.
* Portions created by the Initial Developer are Copyright (C) 2009
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
* Nochum Sossonko <nsossonko@hotmail.com> (original author)
*
* Alternatively, the contents of this file may be used under the terms of
* either of the GNU General Public License Version 2 or later (the "GPL"),
* or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the MPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the MPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
const accessToken = '{"location":{"latitude":51.5090332,"longitude":-0.1212726,"accuracy":150.0},"access_token":"2:jVhRZJ-j6PiRchH_:RGMrR0W1BiwdZs12"}'
function run_test() {
if (!("@mozilla.org/privatebrowsing;1" in Components.classes)) {
do_check_true(true);
return;
}
var prefBranch = Components.classes["@mozilla.org/preferences-service;1"]
.getService(Components.interfaces.nsIPrefBranch2);
var pb = Components.classes["@mozilla.org/privatebrowsing;1"]
.getService(Components.interfaces.nsIPrivateBrowsingService);
prefBranch.setCharPref("geo.wifi.access_token.test", accessToken);
var token = prefBranch.getCharPref("geo.wifi.access_token.test");
do_check_eq(token, accessToken);
pb.privateBrowsingEnabled = true;
token = "";
try {
token = prefBranch.getCharPref("geo.wifi.access_token.test");
}
catch(e){}
finally {
do_check_eq(token, "");
}
token = "";
prefBranch.setCharPref("geo.wifi.access_token.test", accessToken);
pb.privateBrowsingEnabled = false;
try {
token = prefBranch.getCharPref("geo.wifi.access_token.test");
}
catch(e){}
finally {
do_check_eq(token, "");
}
}

View File

@ -149,8 +149,7 @@ WifiGeoPositionProvider.prototype = {
contractID: "@mozilla.org/geolocation/provider;1",
QueryInterface: XPCOMUtils.generateQI([Ci.nsIGeolocationProvider,
Ci.nsIWifiListener,
Ci.nsITimerCallback,
Ci.nsISupportsWeakReference]),
Ci.nsITimerCallback]),
prefService: null,
@ -159,17 +158,6 @@ WifiGeoPositionProvider.prototype = {
timer: null,
hasSeenWiFi: false,
observe: function (aSubject, aTopic, aData) {
if (aTopic == "private-browsing") {
if (aData == "enter" || aData == "exit") {
try {
let branch = this.prefService.getBranch("geo.wifi.access_token.");
branch.deleteBranch("");
} catch (e) {}
}
}
},
startup: function() {
LOG("startup called");
@ -185,10 +173,6 @@ WifiGeoPositionProvider.prototype = {
this.timer.initWithCallback(this, 5000, this.timer.TYPE_ONE_SHOT);
else
this.timer.initWithCallback(this, 200, this.timer.TYPE_REPEATING_SLACK);
let os = Cc["@mozilla.org/observer-service;1"].getService(Ci.nsIObserverService);
os.addObserver(this, "private-browsing", true);
},
watch: function(c) {