зеркало из https://github.com/mozilla/pjs.git
Fix for bug 203992. Bookmark's Notify/schedule fail to prompt user when change has occured.
r=jag, sr=bryner
This commit is contained in:
Родитель
80ed633d21
Коммит
58ad0b7e9a
|
@ -2108,11 +2108,15 @@ nsBookmarksService::FireTimer(nsITimer* aTimer, void* aClosure)
|
|||
if (NS_SUCCEEDED(rv = bmks->GetBookmarkToPing(getter_AddRefs(bookmark))) && (bookmark))
|
||||
{
|
||||
bmks->busyResource = bookmark;
|
||||
const char *url = nsnull;
|
||||
bookmark->GetValueConst(&url);
|
||||
|
||||
nsAutoString url;
|
||||
rv = bmks->GetURLFromResource(bookmark, url);
|
||||
if (NS_FAILED(rv))
|
||||
return;
|
||||
|
||||
#ifdef DEBUG_BOOKMARK_PING_OUTPUT
|
||||
printf("nsBookmarksService::FireTimer - Pinging '%s'\n", url);
|
||||
printf("nsBookmarksService::FireTimer - Pinging '%s'\n",
|
||||
NS_ConvertUCS2toUTF8(url).get());
|
||||
#endif
|
||||
|
||||
nsCOMPtr<nsIURI> uri;
|
||||
|
@ -2167,13 +2171,13 @@ NS_IMETHODIMP
|
|||
nsBookmarksService::OnStopRequest(nsIRequest* request, nsISupports *ctxt,
|
||||
nsresult status)
|
||||
{
|
||||
nsresult rv;
|
||||
nsresult rv;
|
||||
|
||||
const char *uri = nsnull;
|
||||
if (NS_SUCCEEDED(rv = busyResource->GetValueConst(&uri)) && (uri))
|
||||
nsAutoString url;
|
||||
if (NS_SUCCEEDED(rv = GetURLFromResource(busyResource, url)))
|
||||
{
|
||||
#ifdef DEBUG_BOOKMARK_PING_OUTPUT
|
||||
printf("Finished polling '%s'\n", uri);
|
||||
printf("Finished polling '%s'\n", NS_ConvertUCS2toUTF8(url).get());
|
||||
#endif
|
||||
}
|
||||
nsCOMPtr<nsIChannel> channel = do_QueryInterface(request);
|
||||
|
@ -2201,7 +2205,7 @@ nsBookmarksService::OnStopRequest(nsIRequest* request, nsISupports *ctxt,
|
|||
if (!eTagValue.IsEmpty())
|
||||
{
|
||||
#ifdef DEBUG_BOOKMARK_PING_OUTPUT
|
||||
printf("eTag: '%s'\n", NS_LossyConvertASCIItoUCS2(eTagValue).get());
|
||||
printf("eTag: '%s'\n", NS_ConvertUCS2toUTF8(eTagValue).get());
|
||||
#endif
|
||||
nsAutoString eTagStr;
|
||||
nsCOMPtr<nsIRDFNode> currentETagNode;
|
||||
|
@ -2467,7 +2471,7 @@ nsBookmarksService::OnStopRequest(nsIRequest* request, nsISupports *ctxt,
|
|||
}
|
||||
}
|
||||
}
|
||||
promptStr.AppendWithConversion(uri);
|
||||
promptStr.Append(url);
|
||||
|
||||
nsAutoString temp;
|
||||
getLocaleString("WebPageAskDisplay", temp);
|
||||
|
@ -2513,20 +2517,20 @@ nsBookmarksService::OnStopRequest(nsIRequest* request, nsISupports *ctxt,
|
|||
nsCOMPtr<nsISupportsArray> suppArray;
|
||||
rv = NS_NewISupportsArray(getter_AddRefs(suppArray));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
nsCOMPtr<nsISupportsCString> suppString(do_CreateInstance("@mozilla.org/supports-cstring;1", &rv));
|
||||
nsCOMPtr<nsISupportsString> suppString(do_CreateInstance("@mozilla.org/supports-string;1", &rv));
|
||||
if (!suppString) return rv;
|
||||
rv = suppString->SetData(nsDependentCString(uri));
|
||||
rv = suppString->SetData(url);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
suppArray->AppendElement(suppString);
|
||||
|
||||
nsCOMPtr<nsICmdLineHandler> handler(do_GetService("@mozilla.org/commandlinehandler/general-startup;1?type=browser", &rv));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
nsXPIDLCString url;
|
||||
rv = handler->GetChromeUrlForTask(getter_Copies(url));
|
||||
nsXPIDLCString chromeUrl;
|
||||
rv = handler->GetChromeUrlForTask(getter_Copies(chromeUrl));
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
|
||||
wwatch->OpenWindow(0, url, "_blank", "chrome,dialog=no,all",
|
||||
wwatch->OpenWindow(0, chromeUrl, "_blank", "chrome,dialog=no,all",
|
||||
suppArray, getter_AddRefs(newWindow));
|
||||
}
|
||||
}
|
||||
|
@ -2979,6 +2983,33 @@ nsBookmarksService::SortFolder(nsIRDFResource* aFolder,
|
|||
return rv;
|
||||
}
|
||||
|
||||
nsresult
|
||||
nsBookmarksService::GetURLFromResource(nsIRDFResource* aResource,
|
||||
nsAString& aURL)
|
||||
{
|
||||
NS_ENSURE_ARG(aResource);
|
||||
|
||||
nsCOMPtr<nsIRDFNode> urlNode;
|
||||
nsresult rv = mInner->GetTarget(aResource, kNC_URL, PR_TRUE, getter_AddRefs(urlNode));
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
if (urlNode) {
|
||||
nsCOMPtr<nsIRDFLiteral> urlLiteral = do_QueryInterface(urlNode, &rv);
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
const PRUnichar* url = nsnull;
|
||||
rv = urlLiteral->GetValueConst(&url);
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
aURL.Assign(url);
|
||||
}
|
||||
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsBookmarksService::CreateBookmark(const PRUnichar* aName,
|
||||
const char* aURL,
|
||||
|
@ -3615,22 +3646,14 @@ nsBookmarksService::ResolveKeyword(const PRUnichar *aUserInput, char **aShortcut
|
|||
return rv;
|
||||
|
||||
if (source) {
|
||||
nsCOMPtr<nsIRDFNode> urlNode;
|
||||
rv = GetTarget(source, kNC_URL, PR_TRUE, getter_AddRefs(urlNode));
|
||||
nsAutoString url;
|
||||
rv = GetURLFromResource(source, url);
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
if (urlNode) {
|
||||
nsCOMPtr<nsIRDFLiteral> urlLiteral = do_QueryInterface(urlNode);
|
||||
if (urlLiteral) {
|
||||
const PRUnichar* value;
|
||||
rv = urlLiteral->GetValueConst(&value);
|
||||
if (NS_FAILED(rv))
|
||||
return rv;
|
||||
|
||||
*aShortcutURL = ToNewUTF8String(nsDependentString(value));
|
||||
return NS_OK;
|
||||
}
|
||||
if (!url.IsEmpty()) {
|
||||
*aShortcutURL = ToNewUTF8String(url);
|
||||
return NS_OK;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -188,6 +188,9 @@ protected:
|
|||
Sort(nsIRDFResource* aFolder, nsIRDFResource* aProperty,
|
||||
PRInt32 aDirection, PRBool aFoldersFirst, PRBool aRecurse);
|
||||
|
||||
nsresult
|
||||
GetURLFromResource(nsIRDFResource* aResource, nsAString& aURL);
|
||||
|
||||
nsresult LoadBookmarks();
|
||||
nsresult initDatasource();
|
||||
|
||||
|
|
Загрузка…
Ссылка в новой задаче