зеркало из https://github.com/mozilla/pjs.git
Backed out changeset 07a9dcc28c5c from bug 566738 due to possible browser-chrome failures.
--HG-- extra : transplant_source : %0C%19%86%CE%D8%F3%95%7FV%BA%3DsM%06%D4%EF%C8%B7%8Dq
This commit is contained in:
Родитель
3d8ffdf818
Коммит
ad3054d099
|
@ -43,7 +43,6 @@
|
|||
#include "nsISupports.h"
|
||||
|
||||
class nsIURI;
|
||||
class nsString;
|
||||
|
||||
namespace mozilla {
|
||||
|
||||
|
@ -129,18 +128,6 @@ public:
|
|||
nsIURI *aLastVisitedURI,
|
||||
PRUint32 aFlags
|
||||
) = 0;
|
||||
|
||||
/**
|
||||
* Set the title of the URI.
|
||||
*
|
||||
* @pre aURI must not be null.
|
||||
*
|
||||
* @param aURI
|
||||
* The URI to set the title for.
|
||||
* @param aTitle
|
||||
* The title string.
|
||||
*/
|
||||
NS_IMETHOD SetURITitle(nsIURI* aURI, const nsAString& aTitle) = 0;
|
||||
};
|
||||
|
||||
NS_DEFINE_STATIC_IID_ACCESSOR(IHistory, IHISTORY_IID)
|
||||
|
@ -152,8 +139,7 @@ NS_DEFINE_STATIC_IID_ACCESSOR(IHistory, IHISTORY_IID)
|
|||
mozilla::dom::Link *aContent); \
|
||||
NS_IMETHOD VisitURI(nsIURI *aURI, \
|
||||
nsIURI *aLastVisitedURI, \
|
||||
PRUint32 aFlags); \
|
||||
NS_IMETHOD SetURITitle(nsIURI* aURI, const nsAString& aTitle);
|
||||
PRUint32 aFlags);
|
||||
|
||||
} // namespace mozilla
|
||||
|
||||
|
|
|
@ -4704,16 +4704,11 @@ nsDocShell::SetTitle(const PRUnichar * aTitle)
|
|||
treeOwnerAsWin->SetTitle(aTitle);
|
||||
}
|
||||
|
||||
if (mCurrentURI && mLoadType != LOAD_ERROR_PAGE) {
|
||||
nsCOMPtr<IHistory> history = services::GetHistoryService();
|
||||
if (history) {
|
||||
history->SetURITitle(mCurrentURI, mTitle);
|
||||
}
|
||||
else if (mGlobalHistory) {
|
||||
mGlobalHistory->SetPageTitle(mCurrentURI, nsString(mTitle));
|
||||
}
|
||||
if (mGlobalHistory && mCurrentURI && mLoadType != LOAD_ERROR_PAGE) {
|
||||
mGlobalHistory->SetPageTitle(mCurrentURI, nsString(mTitle));
|
||||
}
|
||||
|
||||
|
||||
// Update SessionHistory with the document's title.
|
||||
if (mOSHE && mLoadType != LOAD_BYPASS_HISTORY &&
|
||||
mLoadType != LOAD_ERROR_PAGE) {
|
||||
|
|
|
@ -305,9 +305,9 @@ public:
|
|||
if (!mData->hidden &&
|
||||
mData->transitionType != nsINavHistoryService::TRANSITION_EMBED &&
|
||||
mData->transitionType != nsINavHistoryService::TRANSITION_FRAMED_LINK) {
|
||||
history->NotifyOnVisit(mData->uri, visitId, mData->dateTime,
|
||||
mData->sessionId, mData->lastVisitId,
|
||||
mData->transitionType);
|
||||
history->FireOnVisit(mData->uri, visitId, mData->dateTime,
|
||||
mData->sessionId, mData->lastVisitId,
|
||||
mData->transitionType);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -698,154 +698,6 @@ NS_IMPL_ISUPPORTS1(
|
|||
, Step
|
||||
)
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//// Steps for SetURITitle
|
||||
|
||||
struct SetTitleData : public FailSafeFinishTask
|
||||
{
|
||||
nsCOMPtr<nsIURI> uri;
|
||||
nsString title;
|
||||
};
|
||||
|
||||
/**
|
||||
* Step 3: Notify that title has been updated.
|
||||
*/
|
||||
class TitleNotifyStep: public Step
|
||||
{
|
||||
public:
|
||||
NS_DECL_ISUPPORTS
|
||||
|
||||
TitleNotifyStep(nsAutoPtr<SetTitleData> aData)
|
||||
: mData(aData)
|
||||
{
|
||||
}
|
||||
|
||||
NS_IMETHOD Callback(mozIStorageResultSet* aResultSet)
|
||||
{
|
||||
nsNavHistory* history = nsNavHistory::GetHistoryService();
|
||||
history->NotifyTitleChange(mData->uri, mData->title);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
protected:
|
||||
nsAutoPtr<SetTitleData> mData;
|
||||
};
|
||||
NS_IMPL_ISUPPORTS1(
|
||||
TitleNotifyStep
|
||||
, mozIStorageStatementCallback
|
||||
)
|
||||
|
||||
/**
|
||||
* Step 2: Set title.
|
||||
*/
|
||||
class SetTitleStep : public Step
|
||||
{
|
||||
public:
|
||||
NS_DECL_ISUPPORTS
|
||||
|
||||
SetTitleStep(nsAutoPtr<SetTitleData> aData)
|
||||
: mData(aData)
|
||||
{
|
||||
}
|
||||
|
||||
NS_IMETHOD Callback(mozIStorageResultSet* aResultSet)
|
||||
{
|
||||
if (!aResultSet) {
|
||||
// URI record was not found.
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsCOMPtr<mozIStorageRow> row;
|
||||
nsresult rv = aResultSet->GetNextRow(getter_AddRefs(row));
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsAutoString title;
|
||||
rv = row->GetString(2, title);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// It is actually common to set the title to be the same thing it used to
|
||||
// be. For example, going to any web page will always cause a title to be set,
|
||||
// even though it will often be unchanged since the last visit. In these
|
||||
// cases, we can avoid DB writing and observer overhead.
|
||||
if (mData->title.Equals(title) || (mData->title.IsVoid() && title.IsVoid()))
|
||||
return NS_OK;
|
||||
|
||||
nsNavHistory* history = nsNavHistory::GetHistoryService();
|
||||
|
||||
nsCOMPtr<mozIStorageStatement> stmt =
|
||||
history->GetStatementById(DB_SET_PLACE_TITLE);
|
||||
NS_ENSURE_STATE(stmt);
|
||||
|
||||
if (mData->title.IsVoid()) {
|
||||
rv = stmt->BindNullByName(NS_LITERAL_CSTRING("page_title"));
|
||||
}
|
||||
else {
|
||||
rv = stmt->BindStringByName(
|
||||
NS_LITERAL_CSTRING("page_title"),
|
||||
StringHead(mData->title, TITLE_LENGTH_MAX)
|
||||
);
|
||||
}
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
rv = URIBinder::Bind(stmt, NS_LITERAL_CSTRING("page_url"), mData->uri);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<Step> step = new TitleNotifyStep(mData);
|
||||
rv = step->ExecuteAsync(stmt);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
protected:
|
||||
nsAutoPtr<SetTitleData> mData;
|
||||
};
|
||||
NS_IMPL_ISUPPORTS1(
|
||||
SetTitleStep
|
||||
, mozIStorageStatementCallback
|
||||
)
|
||||
|
||||
/**
|
||||
* Step 1: See if there is an existing URI.
|
||||
*/
|
||||
class StartSetURITitleStep : public Step
|
||||
{
|
||||
public:
|
||||
NS_DECL_ISUPPORTS
|
||||
|
||||
StartSetURITitleStep(nsAutoPtr<SetTitleData> aData)
|
||||
: mData(aData)
|
||||
{
|
||||
}
|
||||
|
||||
NS_IMETHOD Callback(mozIStorageResultSet* aResultSet)
|
||||
{
|
||||
nsNavHistory* history = nsNavHistory::GetHistoryService();
|
||||
|
||||
// Find existing entry in moz_places table, if any.
|
||||
nsCOMPtr<mozIStorageStatement> stmt =
|
||||
history->GetStatementById(DB_GET_URL_PAGE_INFO);
|
||||
NS_ENSURE_STATE(stmt);
|
||||
|
||||
nsresult rv = URIBinder::Bind(stmt, NS_LITERAL_CSTRING("page_url"), mData->uri);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCOMPtr<Step> step = new SetTitleStep(mData);
|
||||
rv = step->ExecuteAsync(stmt);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
protected:
|
||||
nsAutoPtr<SetTitleData> mData;
|
||||
};
|
||||
NS_IMPL_ISUPPORTS1(
|
||||
StartSetURITitleStep
|
||||
, Step
|
||||
)
|
||||
|
||||
} // anonymous namespace
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -1157,38 +1009,6 @@ History::UnregisterVisitedCallback(nsIURI* aURI,
|
|||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
History::SetURITitle(nsIURI* aURI, const nsAString& aTitle)
|
||||
{
|
||||
NS_PRECONDITION(aURI, "Must pass a non-null URI!");
|
||||
if (mShuttingDown) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsNavHistory* history = nsNavHistory::GetHistoryService();
|
||||
PRBool canAdd;
|
||||
nsresult rv = history->CanAddURI(aURI, &canAdd);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
if (!canAdd) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
nsAutoPtr<SetTitleData> data(new SetTitleData());
|
||||
data->uri = aURI;
|
||||
|
||||
if (aTitle.IsEmpty()) {
|
||||
data->title.SetIsVoid(PR_TRUE);
|
||||
}
|
||||
else {
|
||||
data->title.Assign(aTitle);
|
||||
}
|
||||
|
||||
nsCOMPtr<Step> task(new StartSetURITitleStep(data));
|
||||
AppendTask(task);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
//// nsIObserver
|
||||
|
||||
|
|
|
@ -53,7 +53,7 @@ namespace mozilla {
|
|||
namespace places {
|
||||
|
||||
#define NS_HISTORYSERVICE_CID \
|
||||
{0x0937a705, 0x91a6, 0x417a, {0x82, 0x92, 0xb2, 0x2e, 0xb1, 0x0d, 0xa8, 0x6c}}
|
||||
{0x9fc91e65, 0x1475, 0x4353, {0x9b, 0x9a, 0x93, 0xd7, 0x6f, 0x5b, 0xd9, 0xb7}}
|
||||
|
||||
class History : public IHistory
|
||||
, public nsIObserver
|
||||
|
|
|
@ -2155,12 +2155,12 @@ nsNavHistory::GetNewSessionID()
|
|||
|
||||
|
||||
void
|
||||
nsNavHistory::NotifyOnVisit(nsIURI* aURI,
|
||||
PRInt64 aVisitID,
|
||||
PRTime aTime,
|
||||
PRInt64 aSessionID,
|
||||
PRInt64 referringVisitID,
|
||||
PRInt32 aTransitionType)
|
||||
nsNavHistory::FireOnVisit(nsIURI* aURI,
|
||||
PRInt64 aVisitID,
|
||||
PRTime aTime,
|
||||
PRInt64 aSessionID,
|
||||
PRInt64 referringVisitID,
|
||||
PRInt32 aTransitionType)
|
||||
{
|
||||
PRUint32 added = 0;
|
||||
NOTIFY_OBSERVERS(mCanNotify, mCacheObservers, mObservers,
|
||||
|
@ -2169,13 +2169,6 @@ nsNavHistory::NotifyOnVisit(nsIURI* aURI,
|
|||
referringVisitID, aTransitionType, &added));
|
||||
}
|
||||
|
||||
void
|
||||
nsNavHistory::NotifyTitleChange(nsIURI* aURI, const nsString& aTitle)
|
||||
{
|
||||
NOTIFY_OBSERVERS(mCanNotify, mCacheObservers, mObservers,
|
||||
nsINavHistoryObserver, OnTitleChanged(aURI, aTitle));
|
||||
}
|
||||
|
||||
|
||||
PRInt32
|
||||
nsNavHistory::GetDaysOfHistory() {
|
||||
|
@ -2882,7 +2875,7 @@ nsNavHistory::AddVisit(nsIURI* aURI, PRTime aTime, nsIURI* aReferringURI,
|
|||
// GetQueryResults to maintain consistency.
|
||||
// FIXME bug 325241: make a way to observe hidden URLs
|
||||
if (!hidden) {
|
||||
NotifyOnVisit(aURI, *aVisitID, aTime, aSessionID, referringVisitID,
|
||||
FireOnVisit(aURI, *aVisitID, aTime, aSessionID, referringVisitID,
|
||||
aTransitionType);
|
||||
}
|
||||
|
||||
|
@ -7347,6 +7340,7 @@ nsNavHistory::SetPageTitleInternal(nsIURI* aURI, const nsAString& aTitle)
|
|||
rv = mDBSetPlaceTitle->Execute();
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// observers (have to check first if it's bookmarked)
|
||||
NOTIFY_OBSERVERS(mCanNotify, mCacheObservers, mObservers,
|
||||
nsINavHistoryObserver, OnTitleChanged(aURI, aTitle));
|
||||
|
||||
|
|
|
@ -121,8 +121,6 @@ namespace places {
|
|||
, DB_GET_PAGE_VISIT_STATS = 5
|
||||
, DB_UPDATE_PAGE_VISIT_STATS = 6
|
||||
, DB_ADD_NEW_PAGE = 7
|
||||
, DB_GET_URL_PAGE_INFO = 8
|
||||
, DB_SET_PLACE_TITLE = 9
|
||||
};
|
||||
|
||||
} // namespace places
|
||||
|
@ -440,10 +438,6 @@ public:
|
|||
return mDBUpdatePageVisitStats;
|
||||
case DB_ADD_NEW_PAGE:
|
||||
return mDBAddNewPage;
|
||||
case DB_GET_URL_PAGE_INFO:
|
||||
return mDBGetURLPageInfo;
|
||||
case DB_SET_PLACE_TITLE:
|
||||
return mDBSetPlaceTitle;
|
||||
}
|
||||
return nsnull;
|
||||
}
|
||||
|
@ -453,18 +447,13 @@ public:
|
|||
/**
|
||||
* Fires onVisit event to nsINavHistoryService observers
|
||||
*/
|
||||
void NotifyOnVisit(nsIURI* aURI,
|
||||
void FireOnVisit(nsIURI* aURI,
|
||||
PRInt64 aVisitID,
|
||||
PRTime aTime,
|
||||
PRInt64 aSessionID,
|
||||
PRInt64 referringVisitID,
|
||||
PRInt32 aTransitionType);
|
||||
|
||||
/**
|
||||
* Fires onTitleChanged event to nsINavHistoryService observers
|
||||
*/
|
||||
void NotifyTitleChange(nsIURI* aURI, const nsString& title);
|
||||
|
||||
private:
|
||||
~nsNavHistory();
|
||||
|
||||
|
|
|
@ -48,7 +48,6 @@ include $(topsrcdir)/config/rules.mk
|
|||
_BROWSER_FILES = \
|
||||
browser_bug399606.js \
|
||||
browser_visituri.js \
|
||||
browser_settitle.js \
|
||||
$(NULL)
|
||||
|
||||
# These are files that need to be loaded via the HTTP proxy server
|
||||
|
@ -64,8 +63,6 @@ _HTTP_FILES = \
|
|||
visituri/redirect_twice.sjs \
|
||||
visituri/redirect_once.sjs \
|
||||
visituri/final.html \
|
||||
settitle/title1.html \
|
||||
settitle/title2.html \
|
||||
$(NULL)
|
||||
|
||||
libs:: $(_BROWSER_FILES)
|
||||
|
|
Загрузка…
Ссылка в новой задаче