Bug 1173439 P3 Use url query field for database matching and Request creation. r=ehsan

This commit is contained in:
Ben Kelly 2015-06-16 17:39:05 -07:00
Родитель 2a2c3fa17d
Коммит 0a4c003dd5
2 изменённых файлов: 17 добавлений и 11 удалений

22
dom/cache/DBSchema.cpp поставляемый
Просмотреть файл

@ -937,19 +937,14 @@ QueryCache(mozIStorageConnection* aConn, CacheId aCacheId,
"LEFT OUTER JOIN response_headers ON entries.id=response_headers.entry_id "
"AND response_headers.name='vary' "
"WHERE entries.cache_id=:cache_id "
"AND entries."
"AND entries.request_url_no_query=:url_no_query "
);
nsAutoCString urlToMatch;
if (aParams.ignoreSearch()) {
urlToMatch = aRequest.urlWithoutQuery();
query.AppendLiteral("request_url_no_query");
} else {
urlToMatch = aRequest.url();
query.AppendLiteral("request_url");
if (!aParams.ignoreSearch()) {
query.AppendLiteral("AND entries.request_url_query=:url_query ");
}
query.AppendLiteral("=:url GROUP BY entries.id ORDER BY entries.id;");
query.AppendLiteral("GROUP BY entries.id ORDER BY entries.id;");
nsCOMPtr<mozIStorageStatement> state;
nsresult rv = aConn->CreateStatement(query, getter_AddRefs(state));
@ -958,9 +953,16 @@ QueryCache(mozIStorageConnection* aConn, CacheId aCacheId,
rv = state->BindInt64ByName(NS_LITERAL_CSTRING("cache_id"), aCacheId);
if (NS_WARN_IF(NS_FAILED(rv))) { return rv; }
rv = state->BindUTF8StringByName(NS_LITERAL_CSTRING("url"), urlToMatch);
rv = state->BindUTF8StringByName(NS_LITERAL_CSTRING("url_no_query"),
aRequest.urlWithoutQuery());
if (NS_WARN_IF(NS_FAILED(rv))) { return rv; }
if (!aParams.ignoreSearch()) {
rv = state->BindUTF8StringByName(NS_LITERAL_CSTRING("url_query"),
aRequest.urlQuery());
if (NS_WARN_IF(NS_FAILED(rv))) { return rv; }
}
bool hasMoreData = false;
while (NS_SUCCEEDED(state->ExecuteStep(&hasMoreData)) && hasMoreData) {
// no invalid EntryId, init to least likely real value

6
dom/cache/TypeUtils.cpp поставляемый
Просмотреть файл

@ -321,7 +321,11 @@ TypeUtils::ToInternalRequest(const CacheRequest& aIn)
nsRefPtr<InternalRequest> internalRequest = new InternalRequest();
internalRequest->SetMethod(aIn.method());
internalRequest->SetURL(aIn.url());
nsAutoCString url(aIn.urlWithoutQuery());
url.Append(aIn.urlQuery());
internalRequest->SetURL(url);
internalRequest->SetReferrer(aIn.referrer());
internalRequest->SetMode(aIn.mode());
internalRequest->SetCredentialsMode(aIn.credentials());