Commit 8dfddcef authored by nhiroki@chromium.org's avatar nhiroki@chromium.org

CacheStorage: Show a warning message when unsupported CacheQueryOptions are specified

Currently CacheQueryOptions(ignoreSearch, ignoreMethod, ignoreVary) are not
supported on Cache.match/matchAll/delete/keys and CacheStorage.match, but
these APIs can accept the options and just drop them internally.

This CL makes these APIs show a warning message when unsupported options
are specified.

BUG=426309, 499216, 482256, 520784

Review URL: https://codereview.chromium.org/1320823003

git-svn-id: svn://svn.chromium.org/blink/trunk@201316 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 843f972e
CONSOLE WARNING: Cache.match() does not support 'ignoreSearch' option yet. See http://crbug.com/520784
CONSOLE WARNING: Cache.match() does not support 'ignoreSearch' option yet. See http://crbug.com/520784
This is a testharness.js-based test.
PASS Cache.match with no matching entries
PASS Cache.match with URL
......
CONSOLE WARNING: Cache.match() does not support 'ignoreSearch' option yet. See http://crbug.com/520784
CONSOLE WARNING: Cache.match() does not support 'ignoreSearch' option yet. See http://crbug.com/520784
CONSOLE WARNING: Cache.match() does not support 'ignoreVary' option yet. See http://crbug.com/499216
This is a testharness.js-based test.
PASS Cache.matchAll with no matching entries
PASS Cache.matchAll with URL
......
CONSOLE WARNING: Cache.match() does not support 'ignoreSearch' option yet. See http://crbug.com/520784
CONSOLE WARNING: Cache.match() does not support 'ignoreSearch' option yet. See http://crbug.com/520784
This is a testharness.js-based test.
PASS Cache.match with no matching entries
PASS Cache.match with URL
......
CONSOLE WARNING: Cache.match() does not support 'ignoreSearch' option yet. See http://crbug.com/520784
CONSOLE WARNING: Cache.match() does not support 'ignoreSearch' option yet. See http://crbug.com/520784
CONSOLE WARNING: Cache.match() does not support 'ignoreVary' option yet. See http://crbug.com/499216
This is a testharness.js-based test.
PASS Cache.matchAll with no matching entries
PASS Cache.matchAll with URL
......
......@@ -14,6 +14,7 @@
#include "bindings/modules/v8/V8Response.h"
#include "core/dom/DOMException.h"
#include "core/dom/ExceptionCode.h"
#include "core/inspector/ConsoleMessage.h"
#include "modules/cachestorage/CacheStorageError.h"
#include "modules/fetch/BodyStreamBuffer.h"
#include "modules/fetch/FetchDataLoader.h"
......@@ -27,6 +28,16 @@ namespace blink {
namespace {
void checkCacheQueryOptions(const CacheQueryOptions& options, ExecutionContext* context)
{
if (options.ignoreSearch())
context->addConsoleMessage(ConsoleMessage::create(JSMessageSource, WarningMessageLevel, "Cache.match() does not support 'ignoreSearch' option yet. See http://crbug.com/520784"));
if (options.ignoreMethod())
context->addConsoleMessage(ConsoleMessage::create(JSMessageSource, WarningMessageLevel, "Cache.match() does not support 'ignoreMethod' option yet. See http://crbug.com/482256"));
if (options.ignoreVary())
context->addConsoleMessage(ConsoleMessage::create(JSMessageSource, WarningMessageLevel, "Cache.match() does not support 'ignoreVary' option yet. See http://crbug.com/499216"));
}
// FIXME: Consider using CallbackPromiseAdapter.
class CacheMatchCallbacks : public WebServiceWorkerCache::CacheMatchCallbacks {
WTF_MAKE_NONCOPYABLE(CacheMatchCallbacks);
......@@ -404,6 +415,7 @@ ScriptPromise Cache::matchImpl(ScriptState* scriptState, const Request* request,
{
WebServiceWorkerRequest webRequest;
request->populateWebServiceWorkerRequest(webRequest);
checkCacheQueryOptions(options, scriptState->executionContext());
ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
const ScriptPromise promise = resolver->promise();
......@@ -423,6 +435,7 @@ ScriptPromise Cache::matchAllImpl(ScriptState* scriptState, const Request* reque
{
WebServiceWorkerRequest webRequest;
request->populateWebServiceWorkerRequest(webRequest);
checkCacheQueryOptions(options, scriptState->executionContext());
ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
const ScriptPromise promise = resolver->promise();
......@@ -457,6 +470,7 @@ ScriptPromise Cache::deleteImpl(ScriptState* scriptState, const Request* request
WebVector<WebServiceWorkerCache::BatchOperation> batchOperations(size_t(1));
batchOperations[0].operationType = WebServiceWorkerCache::OperationTypeDelete;
request->populateWebServiceWorkerRequest(batchOperations[0].request);
checkCacheQueryOptions(options, scriptState->executionContext());
batchOperations[0].matchParams = toWebQueryParams(options);
ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
......@@ -526,6 +540,7 @@ ScriptPromise Cache::keysImpl(ScriptState* scriptState, const Request* request,
{
WebServiceWorkerRequest webRequest;
request->populateWebServiceWorkerRequest(webRequest);
checkCacheQueryOptions(options, scriptState->executionContext());
ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
const ScriptPromise promise = resolver->promise();
......
......@@ -9,6 +9,7 @@
#include "bindings/core/v8/ScriptState.h"
#include "core/dom/DOMException.h"
#include "core/dom/ExceptionCode.h"
#include "core/inspector/ConsoleMessage.h"
#include "modules/cachestorage/CacheStorageError.h"
#include "modules/fetch/Request.h"
#include "modules/fetch/Response.h"
......@@ -39,6 +40,16 @@ bool commonChecks(ScriptState* scriptState, ExceptionState& exceptionState)
return true;
}
void checkCacheQueryOptions(const CacheQueryOptions& options, ExecutionContext* context)
{
if (options.ignoreSearch())
context->addConsoleMessage(ConsoleMessage::create(JSMessageSource, WarningMessageLevel, "Cache.match() does not support 'ignoreSearch' option yet. See http://crbug.com/520784"));
if (options.ignoreMethod())
context->addConsoleMessage(ConsoleMessage::create(JSMessageSource, WarningMessageLevel, "Cache.match() does not support 'ignoreMethod' option yet. See http://crbug.com/482256"));
if (options.ignoreVary())
context->addConsoleMessage(ConsoleMessage::create(JSMessageSource, WarningMessageLevel, "Cache.match() does not support 'ignoreVary' option yet. See http://crbug.com/499216"));
}
}
// FIXME: Consider using CallbackPromiseAdapter.
......@@ -301,6 +312,7 @@ ScriptPromise CacheStorage::matchImpl(ScriptState* scriptState, const Request* r
{
WebServiceWorkerRequest webRequest;
request->populateWebServiceWorkerRequest(webRequest);
checkCacheQueryOptions(options, scriptState->executionContext());
ScriptPromiseResolver* resolver = ScriptPromiseResolver::create(scriptState);
const ScriptPromise promise = resolver->promise();
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment