fix bug 161701 - stop using prefs to save the last page visited
instead, use mork's MetaRow and store it in the kLastVisitedPage token r=bnesse, sr=bienvenu git-svn-id: svn://10.0.0.236/trunk@127788 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
parent
ee7a655cd1
commit
a11acba0f4
@ -106,7 +106,6 @@ nsIMdbFactory* nsGlobalHistory::gMdbFactory = nsnull;
|
||||
nsIPrefBranch* nsGlobalHistory::gPrefBranch = nsnull;
|
||||
|
||||
#define PREF_BRANCH_BASE "browser."
|
||||
#define PREF_BROWSER_HISTORY_LAST_PAGE_VISITED "history.last_page_visited"
|
||||
#define PREF_BROWSER_HISTORY_EXPIRE_DAYS "history_expire_days"
|
||||
#define PREF_BROWSER_STARTUP_PAGE "startup.page"
|
||||
#define PREF_AUTOCOMPLETE_ONLY_TYPED "urlbar.matchOnlyTyped"
|
||||
@ -1195,24 +1194,27 @@ nsresult
|
||||
nsGlobalHistory::SaveLastPageVisited(const char *aURL)
|
||||
{
|
||||
NS_ENSURE_TRUE(aURL, NS_ERROR_FAILURE);
|
||||
NS_ENSURE_STATE(gPrefBranch);
|
||||
NS_ENSURE_STATE(mMetaRow);
|
||||
|
||||
return gPrefBranch->SetCharPref(PREF_BROWSER_HISTORY_LAST_PAGE_VISITED, aURL);
|
||||
mdb_err err = SetRowValue(mMetaRow, kToken_LastPageVisited, aURL);
|
||||
NS_ENSURE_TRUE(err == 0, NS_ERROR_FAILURE);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsGlobalHistory::GetLastPageVisited(char **_retval)
|
||||
{
|
||||
NS_ENSURE_SUCCESS(OpenDB(), NS_ERROR_FAILURE);
|
||||
|
||||
NS_ENSURE_ARG_POINTER(_retval);
|
||||
NS_ENSURE_STATE(gPrefBranch);
|
||||
NS_ENSURE_STATE(mMetaRow);
|
||||
|
||||
nsXPIDLCString lastPageVisited;
|
||||
nsresult rv =
|
||||
gPrefBranch->GetCharPref(PREF_BROWSER_HISTORY_LAST_PAGE_VISITED,
|
||||
getter_Copies(lastPageVisited));
|
||||
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
nsCAutoString lastPageVisited;
|
||||
mdb_err err = GetRowValue(mMetaRow, kToken_LastPageVisited, lastPageVisited);
|
||||
NS_ENSURE_TRUE(err == 0, NS_ERROR_FAILURE);
|
||||
|
||||
*_retval = ToNewCString(lastPageVisited);
|
||||
NS_ENSURE_TRUE(*_retval, NS_ERROR_OUT_OF_MEMORY);
|
||||
|
||||
@ -2480,6 +2482,10 @@ nsGlobalHistory::OpenExistingFile(nsIMdbFactory *factory, const char *filePath)
|
||||
return NS_ERROR_FAILURE;
|
||||
}
|
||||
|
||||
err = mTable->GetMetaRow(mEnv, &oid, nsnull, getter_AddRefs(mMetaRow));
|
||||
if (err != 0)
|
||||
NS_WARNING("Could not get meta row\n");
|
||||
|
||||
CheckHostnameEntries();
|
||||
|
||||
if (err != 0) return NS_ERROR_FAILURE;
|
||||
@ -2683,6 +2689,9 @@ nsGlobalHistory::CreateTokens()
|
||||
err = mStore->StringToToken(mEnv, "Typed", &kToken_TypedColumn);
|
||||
if (err != 0) return NS_ERROR_FAILURE;
|
||||
|
||||
// meta-data tokens
|
||||
err = mStore->StringToToken(mEnv, "LastPageVisited", &kToken_LastPageVisited);
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
@ -2789,6 +2798,9 @@ nsGlobalHistory::CloseDB()
|
||||
ExpireEntries(PR_FALSE /* don't notify */);
|
||||
err = Commit(kSessionCommit);
|
||||
|
||||
// order is important here - logically smallest objects first
|
||||
mMetaRow = nsnull;
|
||||
|
||||
if (mTable)
|
||||
mTable->Release();
|
||||
|
||||
@ -4040,6 +4052,9 @@ nsGlobalHistory::AutoCompleteSearch(const nsAString& aSearchString,
|
||||
kToken_TypedColumn,
|
||||
mAutocompleteOnlyTyped,
|
||||
aSearchString, aExclude);
|
||||
|
||||
nsCOMPtr<nsISupports> kungFuDeathGrip(enumerator);
|
||||
|
||||
rv = enumerator->Init(mEnv, mTable);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
@ -4061,7 +4076,7 @@ nsGlobalHistory::AutoCompleteSearch(const nsAString& aSearchString,
|
||||
enumerator->GetNext(&entry);
|
||||
array.AppendElement(entry);
|
||||
}
|
||||
|
||||
|
||||
// turn auto array into flat array for quick sort, now that we
|
||||
// know how many items there are
|
||||
PRUint32 count = array.Count();
|
||||
|
||||
@ -278,6 +278,8 @@ protected:
|
||||
nsIMdbStore* mStore; // OWNER
|
||||
nsIMdbTable* mTable; // OWNER
|
||||
|
||||
nsCOMPtr<nsIMdbRow> mMetaRow;
|
||||
|
||||
mdb_scope kToken_HistoryRowScope;
|
||||
mdb_kind kToken_HistoryKind;
|
||||
|
||||
@ -291,6 +293,9 @@ protected:
|
||||
mdb_column kToken_HiddenColumn;
|
||||
mdb_column kToken_TypedColumn;
|
||||
|
||||
// meta-data tokens
|
||||
mdb_column kToken_LastPageVisited;
|
||||
|
||||
//
|
||||
// AddPage-oriented stuff
|
||||
//
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user