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:
varga%netscape.com 2003-05-30 08:56:59 +00:00
Родитель 80ed633d21
Коммит 58ad0b7e9a
2 изменённых файлов: 53 добавлений и 27 удалений

Просмотреть файл

@ -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();