mirror of
https://gitlab.winehq.org/wine/wine-gecko.git
synced 2024-09-13 09:24:08 -07:00
Bug 949639 - Move CanAddURI to nsAndroidHistory r=blassey
This commit is contained in:
parent
34591a10cd
commit
954b4417a5
@ -94,49 +94,12 @@ class GlobalHistory {
|
||||
GeckoAppShell.notifyUriVisited(uri);
|
||||
}
|
||||
|
||||
// Logic ported from nsNavHistory::CanAddURI.
|
||||
// http://mxr.mozilla.org/mozilla-central/source/toolkit/components/places/nsNavHistory.cpp#1272
|
||||
private boolean canAddURI(String uri) {
|
||||
if (uri == null || uri.length() == 0)
|
||||
return false;
|
||||
|
||||
// First, heck the most common cases (HTTP, HTTPS) to avoid most of the work.
|
||||
if (uri.startsWith("http:") || uri.startsWith("https:"))
|
||||
return true;
|
||||
|
||||
String scheme = Uri.parse(uri).getScheme();
|
||||
if (scheme == null)
|
||||
return false;
|
||||
|
||||
// Now check for all bad things.
|
||||
if (scheme.equals("about") ||
|
||||
scheme.equals("imap") ||
|
||||
scheme.equals("news") ||
|
||||
scheme.equals("mailbox") ||
|
||||
scheme.equals("moz-anno") ||
|
||||
scheme.equals("view-source") ||
|
||||
scheme.equals("chrome") ||
|
||||
scheme.equals("resource") ||
|
||||
scheme.equals("data") ||
|
||||
scheme.equals("wyciwyg") ||
|
||||
scheme.equals("javascript"))
|
||||
return false;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
public void add(String uri) {
|
||||
if (!canAddURI(uri))
|
||||
return;
|
||||
|
||||
BrowserDB.updateVisitedHistory(GeckoAppShell.getContext().getContentResolver(), uri);
|
||||
addToGeckoOnly(uri);
|
||||
}
|
||||
|
||||
public void update(String uri, String title) {
|
||||
if (!canAddURI(uri))
|
||||
return;
|
||||
|
||||
BrowserDB.updateHistoryTitle(GeckoAppShell.getContext().getContentResolver(), uri, title);
|
||||
}
|
||||
|
||||
|
@ -84,6 +84,14 @@ nsAndroidHistory::VisitURI(nsIURI *aURI, nsIURI *aLastVisitedURI, uint32_t aFlag
|
||||
if (!aURI)
|
||||
return NS_OK;
|
||||
|
||||
// Silently return if URI is something we shouldn't add to DB.
|
||||
bool canAdd;
|
||||
nsresult rv = CanAddURI(aURI, &canAdd);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
if (!canAdd) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
if (!(aFlags & VisitFlags::TOP_LEVEL))
|
||||
return NS_OK;
|
||||
|
||||
@ -94,7 +102,7 @@ nsAndroidHistory::VisitURI(nsIURI *aURI, nsIURI *aLastVisitedURI, uint32_t aFlag
|
||||
return NS_OK;
|
||||
|
||||
nsAutoCString uri;
|
||||
nsresult rv = aURI->GetSpec(uri);
|
||||
rv = aURI->GetSpec(uri);
|
||||
if (NS_FAILED(rv)) return rv;
|
||||
NS_ConvertUTF8toUTF16 uriString(uri);
|
||||
GeckoAppShell::MarkURIVisited(uriString);
|
||||
@ -104,6 +112,14 @@ nsAndroidHistory::VisitURI(nsIURI *aURI, nsIURI *aLastVisitedURI, uint32_t aFlag
|
||||
NS_IMETHODIMP
|
||||
nsAndroidHistory::SetURITitle(nsIURI *aURI, const nsAString& aTitle)
|
||||
{
|
||||
// Silently return if URI is something we shouldn't add to DB.
|
||||
bool canAdd;
|
||||
nsresult rv = CanAddURI(aURI, &canAdd);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
if (!canAdd) {
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
if (AndroidBridge::Bridge()) {
|
||||
nsAutoCString uri;
|
||||
nsresult rv = aURI->GetSpec(uri);
|
||||
@ -144,3 +160,53 @@ nsAndroidHistory::Run()
|
||||
}
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// Filter out unwanted URIs such as "chrome:", "mailbox:", etc.
|
||||
//
|
||||
// The model is if we don't know differently then add which basically means
|
||||
// we are suppose to try all the things we know not to allow in and then if
|
||||
// we don't bail go on and allow it in.
|
||||
//
|
||||
// Logic ported from nsNavHistory::CanAddURI.
|
||||
|
||||
NS_IMETHODIMP
|
||||
nsAndroidHistory::CanAddURI(nsIURI* aURI, bool* canAdd)
|
||||
{
|
||||
NS_ASSERTION(NS_IsMainThread(), "This can only be called on the main thread");
|
||||
NS_ENSURE_ARG(aURI);
|
||||
NS_ENSURE_ARG_POINTER(canAdd);
|
||||
|
||||
nsAutoCString scheme;
|
||||
nsresult rv = aURI->GetScheme(scheme);
|
||||
NS_ENSURE_SUCCESS(rv, rv);
|
||||
|
||||
// first check the most common cases (HTTP, HTTPS) to allow in to avoid most
|
||||
// of the work
|
||||
if (scheme.EqualsLiteral("http")) {
|
||||
*canAdd = true;
|
||||
return NS_OK;
|
||||
}
|
||||
if (scheme.EqualsLiteral("https")) {
|
||||
*canAdd = true;
|
||||
return NS_OK;
|
||||
}
|
||||
|
||||
// now check for all bad things
|
||||
if (scheme.EqualsLiteral("about") ||
|
||||
scheme.EqualsLiteral("imap") ||
|
||||
scheme.EqualsLiteral("news") ||
|
||||
scheme.EqualsLiteral("mailbox") ||
|
||||
scheme.EqualsLiteral("moz-anno") ||
|
||||
scheme.EqualsLiteral("view-source") ||
|
||||
scheme.EqualsLiteral("chrome") ||
|
||||
scheme.EqualsLiteral("resource") ||
|
||||
scheme.EqualsLiteral("data") ||
|
||||
scheme.EqualsLiteral("wyciwyg") ||
|
||||
scheme.EqualsLiteral("javascript") ||
|
||||
scheme.EqualsLiteral("blob")) {
|
||||
*canAdd = false;
|
||||
return NS_OK;
|
||||
}
|
||||
*canAdd = true;
|
||||
return NS_OK;
|
||||
}
|
||||
|
@ -34,6 +34,8 @@ private:
|
||||
|
||||
nsDataHashtable<nsStringHashKey, nsTArray<mozilla::dom::Link *> *> mListeners;
|
||||
nsTPriorityQueue<nsString> mPendingURIs;
|
||||
|
||||
nsresult CanAddURI(nsIURI* aURI, bool* canAdd);
|
||||
};
|
||||
|
||||
#endif
|
||||
|
Loading…
Reference in New Issue
Block a user