diff --git a/toolkit/components/places/src/nsNavHistory.cpp b/toolkit/components/places/src/nsNavHistory.cpp index 715c23b3c3a..7c26c15adea 100644 --- a/toolkit/components/places/src/nsNavHistory.cpp +++ b/toolkit/components/places/src/nsNavHistory.cpp @@ -23,7 +23,7 @@ * Dietrich Ayala * Seth Spitzer * Asaf Romano - * Marco Bonardo + * Marco Bonardo * Edward Lee * * Alternatively, the contents of this file may be used under the terms of @@ -4205,13 +4205,12 @@ nsNavHistory::AddURIInternal(nsIURI* aURI, PRTime aTime, PRBool aRedirect, nsresult nsNavHistory::AddVisitChain(nsIURI* aURI, PRTime aTime, PRBool aToplevel, PRBool aIsRedirect, - nsIURI* aReferrerURI, PRInt64* aVisitID, + nsIURI* aReferrer, PRInt64* aVisitID, PRInt64* aSessionID, PRInt64* aRedirectBookmark) { PRUint32 transitionType = 0; PRInt64 referringVisit = 0; PRTime visitTime = 0; - nsCOMPtr fromVisitURI = aReferrerURI; nsCAutoString spec; nsresult rv = aURI->GetSpec(spec); @@ -4238,7 +4237,7 @@ nsNavHistory::AddVisitChain(nsIURI* aURI, PRTime aTime, // in the correct order. Since the times are in microseconds, it should not // normally be possible to get two pages within one microsecond of each // other so the referrer won't appear before a previous page viewed. - rv = AddVisitChain(redirectURI, aTime - 1, aToplevel, PR_TRUE, aReferrerURI, + rv = AddVisitChain(redirectURI, aTime - 1, aToplevel, PR_TRUE, aReferrer, &referringVisit, aSessionID, aRedirectBookmark); NS_ENSURE_SUCCESS(rv, rv); @@ -4247,16 +4246,12 @@ nsNavHistory::AddVisitChain(nsIURI* aURI, PRTime aTime, if (!aToplevel) { transitionType = nsINavHistoryService::TRANSITION_EMBED; } - - // We have been redirected, update the referrer so we can walk up - // the redirect chain. See bug 411966 for details. - fromVisitURI = redirectURI; - } else if (aReferrerURI) { + } else if (aReferrer) { // We do not want to add a new visit if the referring site is the same as // the new site. This is the situation where a page refreshes itself to // give the user updated information. PRBool referrerIsSame; - if (NS_SUCCEEDED(aURI->Equals(aReferrerURI, &referrerIsSame)) && referrerIsSame) + if (NS_SUCCEEDED(aURI->Equals(aReferrer, &referrerIsSame)) && referrerIsSame) return NS_OK; // If there is a referrer, we know you came from somewhere, either manually @@ -4286,7 +4281,7 @@ nsNavHistory::AddVisitChain(nsIURI* aURI, PRTime aTime, // Try to turn the referrer into a visit. // This also populates the session id. - if (!FindLastVisit(aReferrerURI, &referringVisit, aSessionID)) { + if (!FindLastVisit(aReferrer, &referringVisit, aSessionID)) { // we couldn't find a visit for the referrer, don't set it *aSessionID = GetNewSessionID(); } @@ -4313,7 +4308,7 @@ nsNavHistory::AddVisitChain(nsIURI* aURI, PRTime aTime, } // this call will create the visit and create/update the page entry - return AddVisit(aURI, visitTime, fromVisitURI, transitionType, + return AddVisit(aURI, visitTime, aReferrer, transitionType, aIsRedirect, *aSessionID, aVisitID); } diff --git a/toolkit/components/places/tests/Makefile.in b/toolkit/components/places/tests/Makefile.in index 0773511dbc5..5ae88af0b62 100644 --- a/toolkit/components/places/tests/Makefile.in +++ b/toolkit/components/places/tests/Makefile.in @@ -55,7 +55,6 @@ XPCSHELL_TESTS = \ # Simple MochiTests MOCHI_TESTS = mochitest/test_bug_405924.html \ - mochitest/test_bug_411966.html \ $(NULL) MOCHI_CONTENT = mochitest/prompt_common.js \ @@ -64,7 +63,6 @@ MOCHI_CONTENT = mochitest/prompt_common.js \ ifdef MOZ_MOCHITEST DIRS = \ chrome \ - mochitest/test_bug_411966 \ # These tests are disabled for the time being, see bug 416066 # browser \ $(NULL) diff --git a/toolkit/components/places/tests/mochitest/test_bug_411966.html b/toolkit/components/places/tests/mochitest/test_bug_411966.html deleted file mode 100644 index 6647509143d..00000000000 --- a/toolkit/components/places/tests/mochitest/test_bug_411966.html +++ /dev/null @@ -1,40 +0,0 @@ - - - - - Test for Bug 411966 - - - - - - - - Mozilla Bug 411966 -

- -
-      
-   
- - diff --git a/toolkit/components/places/tests/mochitest/test_bug_411966/ClickedPage.htm b/toolkit/components/places/tests/mochitest/test_bug_411966/ClickedPage.htm deleted file mode 100644 index d4dc0caf628..00000000000 --- a/toolkit/components/places/tests/mochitest/test_bug_411966/ClickedPage.htm +++ /dev/null @@ -1,9 +0,0 @@ - - - - Bug 411966 - - - Clicked link page! - - diff --git a/toolkit/components/places/tests/mochitest/test_bug_411966/ClickedPage.htm^headers^ b/toolkit/components/places/tests/mochitest/test_bug_411966/ClickedPage.htm^headers^ deleted file mode 100644 index 9cdd0703856..00000000000 --- a/toolkit/components/places/tests/mochitest/test_bug_411966/ClickedPage.htm^headers^ +++ /dev/null @@ -1,2 +0,0 @@ -HTTP 302 Moved Temporarily -Location: http://localhost:8888/tests/toolkit/components/places/tests/test_bug_411966/TempRedirectPage.htm diff --git a/toolkit/components/places/tests/mochitest/test_bug_411966/PermRedirectPage.htm b/toolkit/components/places/tests/mochitest/test_bug_411966/PermRedirectPage.htm deleted file mode 100644 index 103bbb02e20..00000000000 --- a/toolkit/components/places/tests/mochitest/test_bug_411966/PermRedirectPage.htm +++ /dev/null @@ -1,9 +0,0 @@ - - - - Bug 411966 - - - Permanently redirected! - - diff --git a/toolkit/components/places/tests/mochitest/test_bug_411966/TempRedirectPage.htm b/toolkit/components/places/tests/mochitest/test_bug_411966/TempRedirectPage.htm deleted file mode 100644 index 6fe42a8de4d..00000000000 --- a/toolkit/components/places/tests/mochitest/test_bug_411966/TempRedirectPage.htm +++ /dev/null @@ -1,9 +0,0 @@ - - - - Bug 411966 - - - Temporarly redirected! - - diff --git a/toolkit/components/places/tests/mochitest/test_bug_411966/TempRedirectPage.htm^headers^ b/toolkit/components/places/tests/mochitest/test_bug_411966/TempRedirectPage.htm^headers^ deleted file mode 100644 index 682ed86acc2..00000000000 --- a/toolkit/components/places/tests/mochitest/test_bug_411966/TempRedirectPage.htm^headers^ +++ /dev/null @@ -1,2 +0,0 @@ -HTTP 301 Moved Permanently -Location: http://localhost:8888/tests/toolkit/components/places/tests/test_bug_411966/PermRedirectPage.htm diff --git a/toolkit/components/places/tests/mochitest/test_bug_411966/TypedPage.htm b/toolkit/components/places/tests/mochitest/test_bug_411966/TypedPage.htm deleted file mode 100644 index c4b8c6efebf..00000000000 --- a/toolkit/components/places/tests/mochitest/test_bug_411966/TypedPage.htm +++ /dev/null @@ -1,9 +0,0 @@ - - - - Bug 411966 - - - Typed in page! - - diff --git a/toolkit/components/places/tests/mochitest/test_bug_411966/makefile.in b/toolkit/components/places/tests/mochitest/test_bug_411966/makefile.in deleted file mode 100644 index f21e8d40fd8..00000000000 --- a/toolkit/components/places/tests/mochitest/test_bug_411966/makefile.in +++ /dev/null @@ -1,59 +0,0 @@ -# -# ***** 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 Bug 411966 test code. -# -# The Initial Developer of the Original Code is -# Mozilla.org. -# Portions created by the Initial Developer are Copyright (C) 2005 -# the Initial Developer. All Rights Reserved. -# -# Contributor(s): -# Marco Bonardo (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 ***** - -DEPTH = ../../../../../.. -topsrcdir = @top_srcdir@ -srcdir = @srcdir@ -VPATH = @srcdir@ -relativesrcdir = toolkit/components/places/tests/test_bug_411966 - -include $(DEPTH)/config/autoconf.mk -include $(topsrcdir)/config/rules.mk - -_HTTP_FILES = \ - redirect.js \ - TypedPage.htm \ - ClickedPage.htm \ - ClickedPage.htm^headers^ \ - TempRedirectPage.htm \ - TempRedirectPage.htm^headers^ \ - PermRedirectPage.htm \ - $(NULL) - -libs:: $(_HTTP_FILES) - $(INSTALL) $(foreach f,$^,"$f") $(DEPTH)/_tests/testing/mochitest/tests/$(relativesrcdir) diff --git a/toolkit/components/places/tests/mochitest/test_bug_411966/redirect.js b/toolkit/components/places/tests/mochitest/test_bug_411966/redirect.js deleted file mode 100644 index 1b4d2d41768..00000000000 --- a/toolkit/components/places/tests/mochitest/test_bug_411966/redirect.js +++ /dev/null @@ -1,191 +0,0 @@ -/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim:set ts=2 sw=2 sts=2 et: */ -/* ***** 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 Bug 411966 test code. - * - * The Initial Developer of the Original Code is - * Mozilla Corporation. - * Portions created by the Initial Developer are Copyright (C) 2008 - * the Initial Developer. All Rights Reserved. - * - * Contributor(s): - * Marco Bonardo (Original Author) - * - * Alternatively, the contents of this file may be used under the terms of - * either 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 ***** */ - -netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); - -const Ci = Components.interfaces; -ok(Ci != null, "Access Ci"); -const Cc = Components.classes; -ok(Cc != null, "Access Cc"); - -// Get Services. -var histsvc = Cc["@mozilla.org/browser/nav-history-service;1"]. - getService(Ci.nsINavHistoryService); -ok(histsvc != null, "Could not get History Service"); -var bhist = histsvc.QueryInterface(Ci.nsIBrowserHistory); -ok(bhist != null, "Could not get Browser History Service"); -var ghist = Cc["@mozilla.org/browser/global-history;2"]. - getService(Ci.nsIGlobalHistory2); -ok(ghist != null, "Could not get Global History Service"); -var ghist3 = ghist.QueryInterface(Ci.nsIGlobalHistory3); -ok(ghist3 != null, "Could not get Global History Service"); -var ios = Cc["@mozilla.org/network/io-service;1"]. - getService(Components.interfaces.nsIIOService); -ok(ios != null, "Could not get IO Service"); -var dirSvc = Cc["@mozilla.org/file/directory_service;1"]. - getService(Ci.nsIProperties); -ok(dirSvc != null, "Could not get Directory Service"); -var storage = Cc["@mozilla.org/storage/service;1"]. - getService(Ci.mozIStorageService); -ok(storage != null, "Could not get Storage Service"); - -// Get database connection. -var database = dirSvc.get('ProfD', Ci.nsIFile); -database.append("places.sqlite"); -var mDBConn = storage.openDatabase(database); -ok(mDBConn != null, "Could not get Database Connection"); - -function uri(URIString) { - return ios.newURI(URIString, null, null); -} - -var typedURI = uri("http://localhost:8888/tests/toolkit/components/places/tests/test_bug_411966/TypedPage.htm"); -var clickedLinkURI = uri("http://localhost:8888/tests/toolkit/components/places/tests/test_bug_411966/ClickedPage.htm"); -var temporaryRedirectURI = uri("http://localhost:8888/tests/toolkit/components/places/tests/test_bug_411966/TempRedirectPage.htm"); -var permanentRedirectURI = uri("http://localhost:8888/tests/toolkit/components/places/tests/test_bug_411966/PermRedirectPage.htm"); - -// Stream Listener -function StreamListener(aChannel, aCallbackFunc) { - this.mChannel = aChannel; - this.mCallbackFunc = aCallbackFunc; -} - -StreamListener.prototype = { - mData: "", - mChannel: null, - - // nsIStreamListener - onStartRequest: function (aRequest, aContext) { - this.mData = ""; - }, - - onDataAvailable: function (aRequest, aContext, aStream, aSourceOffset, aLength) { - netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); - // We actually don't need received data - var scriptableInputStream = - Components.classes["@mozilla.org/scriptableinputstream;1"] - .createInstance(Components.interfaces.nsIScriptableInputStream); - scriptableInputStream.init(aStream); - - this.mData += scriptableInputStream.read(aLength); - }, - - onStopRequest: function (aRequest, aContext, aStatus) { - if (Components.isSuccessCode(aStatus)) - this.mCallbackFunc(this.mData); - else - throw("Could not get page."); - - this.mChannel = null; - }, - - // nsIChannelEventSink - onChannelRedirect: function (aOldChannel, aNewChannel, aFlags) { - netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); - ghist3.addDocumentRedirect(aOldChannel, aNewChannel, aFlags, true); - // If redirecting, store the new channel - this.mChannel = aNewChannel; - }, - - // nsIInterfaceRequestor - getInterface: function (aIID) { - netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); - try { - return this.QueryInterface(aIID); - } catch (e) { - throw Components.results.NS_NOINTERFACE; - } - }, - - // nsIProgressEventSink (not implementing will cause annoying exceptions) - onProgress : function (aRequest, aContext, aProgress, aProgressMax) { }, - onStatus : function (aRequest, aContext, aStatus, aStatusArg) { }, - - // nsIHttpEventSink (not implementing will cause annoying exceptions) - onRedirect : function (aOldChannel, aNewChannel) { }, - - // we are faking an XPCOM interface, so we need to implement QI - QueryInterface : function(aIID) { - if (aIID.equals(Components.interfaces.nsISupports) || - aIID.equals(Components.interfaces.nsIInterfaceRequestor) || - aIID.equals(Components.interfaces.nsIChannelEventSink) || - aIID.equals(Components.interfaces.nsIProgressEventSink) || - aIID.equals(Components.interfaces.nsIHttpEventSink) || - aIID.equals(Components.interfaces.nsIStreamListener)) - return this; - - throw Components.results.NS_NOINTERFACE; - } -}; - -// Check Callback. -function checkDB(data){ - netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); - var referrer = this.mChannel.QueryInterface(Ci.nsIHttpChannel).referrer; - ghist.addURI(this.mChannel.URI, true, true, referrer); - - // We have to wait since we use lazy_add, lazy_timer is 3s - setTimeout("checkDBOnTimeout()", 4000); -} - -function checkDBOnTimeout() { - netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); - - // Get all pages visited from the original typed one - var sql = "SELECT url FROM moz_historyvisits " + - "JOIN moz_places h ON h.id = place_id " + - "WHERE from_visit IN " + - "(SELECT v.id FROM moz_historyvisits v " + - "JOIN moz_places p ON p.id = v.place_id " + - "WHERE p.url = ?1)"; - var stmt = mDBConn.createStatement(sql); - stmt.bindUTF8StringParameter(0, typedURI.spec); - - var empty = true; - while (stmt.executeStep()) { - empty = false; - var visitedURI = stmt.getUTF8String(0); - // Check that redirect from_visit is not from the original typed one - ok(visitedURI == clickedLinkURI.spec, "Got wrong referrer for " + visitedURI); - } - // Ensure that we got some result - ok(!empty, "empty table"); - - SimpleTest.finish(); -}