Commit c3fb0b63 authored by yhirano@chromium.org's avatar yhirano@chromium.org

[BackgroundSync] Use appopriate type parameters for WebCallbacks (2/4)

This series of CLs fixes WebCallback parameter types used in BackgroundSync.

 - WebSyncRegistration* (ownership transferred)
  => PassOwnPtr<WebServiceWorkerResponse>
 - bool* (ownership transferred)
  => bool
 - WebVector<WebSyncRegstration*>* (ownership transferred)
  => const WebVector<WebSyncRegistration*>&
 - WebPermissionStatus* (ownership transferred)
  => WebPermissionStatus
 - WebSyncError* (ownership transferred)
  => const WebSyncError&

1/4: https://codereview.chromium.org/1309143002/
2/4: https://codereview.chromium.org/1311053002/
3/4: https://codereview.chromium.org/1308273002/
4/4: https://codereview.chromium.org/1308283002/

BUG=493531

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

git-svn-id: svn://svn.chromium.org/blink/trunk@201312 bbb929c8-8fbe-4397-9dbb-9b2b20218538
parent 1fb36415
...@@ -20,12 +20,11 @@ ...@@ -20,12 +20,11 @@
namespace blink { namespace blink {
PeriodicSyncRegistration* PeriodicSyncRegistration::take(ScriptPromiseResolver*, WebSyncRegistration* syncRegistration, ServiceWorkerRegistration* serviceWorkerRegistration) PeriodicSyncRegistration* PeriodicSyncRegistration::take(ScriptPromiseResolver*, PassOwnPtr<WebSyncRegistration> registration, ServiceWorkerRegistration* serviceWorkerRegistration)
{ {
OwnPtr<WebSyncRegistration> registration = adoptPtr(syncRegistration);
PeriodicSyncRegistrationOptions options = PeriodicSyncRegistrationOptions(); PeriodicSyncRegistrationOptions options = PeriodicSyncRegistrationOptions();
options.setMinPeriod(syncRegistration->minPeriodMs); options.setMinPeriod(registration->minPeriodMs);
switch (syncRegistration->networkState) { switch (registration->networkState) {
case WebSyncRegistration::NetworkState::NetworkStateAny: case WebSyncRegistration::NetworkState::NetworkStateAny:
options.setNetworkState("any"); options.setNetworkState("any");
break; break;
...@@ -36,7 +35,7 @@ PeriodicSyncRegistration* PeriodicSyncRegistration::take(ScriptPromiseResolver*, ...@@ -36,7 +35,7 @@ PeriodicSyncRegistration* PeriodicSyncRegistration::take(ScriptPromiseResolver*,
options.setNetworkState("online"); options.setNetworkState("online");
break; break;
} }
switch (syncRegistration->powerState) { switch (registration->powerState) {
case WebSyncRegistration::PowerState::PowerStateAuto: case WebSyncRegistration::PowerState::PowerStateAuto:
options.setPowerState("auto"); options.setPowerState("auto");
break; break;
...@@ -44,14 +43,8 @@ PeriodicSyncRegistration* PeriodicSyncRegistration::take(ScriptPromiseResolver*, ...@@ -44,14 +43,8 @@ PeriodicSyncRegistration* PeriodicSyncRegistration::take(ScriptPromiseResolver*,
options.setPowerState("avoid-draining"); options.setPowerState("avoid-draining");
break; break;
} }
options.setTag(syncRegistration->tag); options.setTag(registration->tag);
return new PeriodicSyncRegistration(syncRegistration->id, options, serviceWorkerRegistration); return new PeriodicSyncRegistration(registration->id, options, serviceWorkerRegistration);
}
void PeriodicSyncRegistration::dispose(WebSyncRegistration* syncRegistration)
{
if (syncRegistration)
delete syncRegistration;
} }
PeriodicSyncRegistration::PeriodicSyncRegistration(int64_t id, const PeriodicSyncRegistrationOptions& options, ServiceWorkerRegistration* serviceWorkerRegistration) PeriodicSyncRegistration::PeriodicSyncRegistration(int64_t id, const PeriodicSyncRegistrationOptions& options, ServiceWorkerRegistration* serviceWorkerRegistration)
......
...@@ -20,8 +20,7 @@ struct WebSyncRegistration; ...@@ -20,8 +20,7 @@ struct WebSyncRegistration;
class PeriodicSyncRegistration final : public GarbageCollectedFinalized<PeriodicSyncRegistration>, public ScriptWrappable { class PeriodicSyncRegistration final : public GarbageCollectedFinalized<PeriodicSyncRegistration>, public ScriptWrappable {
DEFINE_WRAPPERTYPEINFO(); DEFINE_WRAPPERTYPEINFO();
public: public:
static PeriodicSyncRegistration* take(ScriptPromiseResolver*, WebSyncRegistration*, ServiceWorkerRegistration*); static PeriodicSyncRegistration* take(ScriptPromiseResolver*, PassOwnPtr<WebSyncRegistration>, ServiceWorkerRegistration*);
static void dispose(WebSyncRegistration* registrationRaw);
virtual ~PeriodicSyncRegistration(); virtual ~PeriodicSyncRegistration();
......
...@@ -27,31 +27,30 @@ SyncRegistrationCallbacks::~SyncRegistrationCallbacks() ...@@ -27,31 +27,30 @@ SyncRegistrationCallbacks::~SyncRegistrationCallbacks()
{ {
} }
void SyncRegistrationCallbacks::onSuccess(WebSyncRegistration* webSyncRegistration) void SyncRegistrationCallbacks::onSuccess(WebPassOwnPtr<WebSyncRegistration> webSyncRegistration)
{ {
if (!m_resolver->executionContext() || m_resolver->executionContext()->activeDOMObjectsAreStopped()) { if (!m_resolver->executionContext() || m_resolver->executionContext()->activeDOMObjectsAreStopped()) {
SyncRegistration::dispose(webSyncRegistration);
return; return;
} }
if (!webSyncRegistration) { OwnPtr<WebSyncRegistration> registration = webSyncRegistration.release();
if (!registration) {
m_resolver->resolve(v8::Null(m_resolver->scriptState()->isolate())); m_resolver->resolve(v8::Null(m_resolver->scriptState()->isolate()));
return; return;
} }
switch (webSyncRegistration->periodicity) { switch (registration->periodicity) {
case WebSyncRegistration::PeriodicityPeriodic: case WebSyncRegistration::PeriodicityPeriodic:
m_resolver->resolve(PeriodicSyncRegistration::take(m_resolver.get(), webSyncRegistration, m_serviceWorkerRegistration)); m_resolver->resolve(PeriodicSyncRegistration::take(m_resolver.get(), registration.release(), m_serviceWorkerRegistration));
break; break;
case WebSyncRegistration::PeriodicityOneShot: case WebSyncRegistration::PeriodicityOneShot:
m_resolver->resolve(SyncRegistration::take(m_resolver.get(), webSyncRegistration, m_serviceWorkerRegistration)); m_resolver->resolve(SyncRegistration::take(m_resolver.get(), registration.release(), m_serviceWorkerRegistration));
break; break;
} }
} }
void SyncRegistrationCallbacks::onError(WebSyncError* error) void SyncRegistrationCallbacks::onError(const WebSyncError& error)
{ {
if (!m_resolver->executionContext() || m_resolver->executionContext()->activeDOMObjectsAreStopped()) { if (!m_resolver->executionContext() || m_resolver->executionContext()->activeDOMObjectsAreStopped()) {
SyncError::dispose(error);
return; return;
} }
m_resolver->reject(SyncError::take(m_resolver.get(), error)); m_resolver->reject(SyncError::take(m_resolver.get(), error));
...@@ -69,20 +68,18 @@ SyncNotifyWhenDoneCallbacks::~SyncNotifyWhenDoneCallbacks() ...@@ -69,20 +68,18 @@ SyncNotifyWhenDoneCallbacks::~SyncNotifyWhenDoneCallbacks()
{ {
} }
void SyncNotifyWhenDoneCallbacks::onSuccess(bool* status) void SyncNotifyWhenDoneCallbacks::onSuccess(bool status)
{ {
OwnPtr<bool> statusPtr = adoptPtr(status);
if (!m_resolver->executionContext() || m_resolver->executionContext()->activeDOMObjectsAreStopped()) { if (!m_resolver->executionContext() || m_resolver->executionContext()->activeDOMObjectsAreStopped()) {
return; return;
} }
m_resolver->resolve(*status); m_resolver->resolve(status);
} }
void SyncNotifyWhenDoneCallbacks::onError(WebSyncError* error) void SyncNotifyWhenDoneCallbacks::onError(const WebSyncError& error)
{ {
if (!m_resolver->executionContext() || m_resolver->executionContext()->activeDOMObjectsAreStopped()) { if (!m_resolver->executionContext() || m_resolver->executionContext()->activeDOMObjectsAreStopped()) {
SyncError::dispose(error);
return; return;
} }
m_resolver->reject(SyncError::take(m_resolver.get(), error)); m_resolver->reject(SyncError::take(m_resolver.get(), error));
...@@ -100,20 +97,18 @@ SyncUnregistrationCallbacks::~SyncUnregistrationCallbacks() ...@@ -100,20 +97,18 @@ SyncUnregistrationCallbacks::~SyncUnregistrationCallbacks()
{ {
} }
void SyncUnregistrationCallbacks::onSuccess(bool* status) void SyncUnregistrationCallbacks::onSuccess(bool status)
{ {
OwnPtr<bool> statusPtr = adoptPtr(status);
if (!m_resolver->executionContext() || m_resolver->executionContext()->activeDOMObjectsAreStopped()) { if (!m_resolver->executionContext() || m_resolver->executionContext()->activeDOMObjectsAreStopped()) {
return; return;
} }
m_resolver->resolve(*status); m_resolver->resolve(status);
} }
void SyncUnregistrationCallbacks::onError(WebSyncError* error) void SyncUnregistrationCallbacks::onError(const WebSyncError& error)
{ {
if (!m_resolver->executionContext() || m_resolver->executionContext()->activeDOMObjectsAreStopped()) { if (!m_resolver->executionContext() || m_resolver->executionContext()->activeDOMObjectsAreStopped()) {
SyncError::dispose(error);
return; return;
} }
m_resolver->reject(SyncError::take(m_resolver.get(), error)); m_resolver->reject(SyncError::take(m_resolver.get(), error));
...@@ -131,47 +126,36 @@ SyncGetRegistrationsCallbacks::~SyncGetRegistrationsCallbacks() ...@@ -131,47 +126,36 @@ SyncGetRegistrationsCallbacks::~SyncGetRegistrationsCallbacks()
{ {
} }
void SyncGetRegistrationsCallbacks::onSuccess(WebVector<WebSyncRegistration*>* webSyncRegistrations) void SyncGetRegistrationsCallbacks::onSuccess(const WebVector<WebSyncRegistration*>& webSyncRegistrations)
{ {
if (!m_resolver->executionContext() || m_resolver->executionContext()->activeDOMObjectsAreStopped()) { Vector<OwnPtr<WebSyncRegistration>> registrations;
if (webSyncRegistrations) { for (WebSyncRegistration* r : webSyncRegistrations) {
for (size_t i = 0; i < webSyncRegistrations->size(); ++i) registrations.append(adoptPtr(r));
SyncRegistration::dispose((*webSyncRegistrations)[i]);
delete (webSyncRegistrations);
}
return;
} }
if (!m_resolver->executionContext() || m_resolver->executionContext()->activeDOMObjectsAreStopped()) {
if (!webSyncRegistrations) {
m_resolver->resolve(v8::Null(m_resolver->scriptState()->isolate()));
return; return;
} }
if (webSyncRegistrations->size() && (*webSyncRegistrations)[0]->periodicity == WebSyncRegistration::PeriodicityOneShot) { if (webSyncRegistrations.size() && webSyncRegistrations[0]->periodicity == WebSyncRegistration::PeriodicityOneShot) {
Vector<SyncRegistration*> syncRegistrations; Vector<SyncRegistration*> syncRegistrations;
for (size_t i = 0; i < webSyncRegistrations->size(); ++i) { for (auto& r : registrations) {
WebSyncRegistration* webSyncRegistration = (*webSyncRegistrations)[i]; SyncRegistration* reg = SyncRegistration::take(m_resolver.get(), r.release(), m_serviceWorkerRegistration);
SyncRegistration* reg = SyncRegistration::take(m_resolver.get(), webSyncRegistration, m_serviceWorkerRegistration);
syncRegistrations.append(reg); syncRegistrations.append(reg);
} }
delete (webSyncRegistrations);
m_resolver->resolve(syncRegistrations); m_resolver->resolve(syncRegistrations);
} else { } else {
Vector<PeriodicSyncRegistration*> syncRegistrations; Vector<PeriodicSyncRegistration*> syncRegistrations;
for (size_t i = 0; i < webSyncRegistrations->size(); ++i) { for (auto& r : registrations) {
WebSyncRegistration* webSyncRegistration = (*webSyncRegistrations)[i]; PeriodicSyncRegistration* reg = PeriodicSyncRegistration::take(m_resolver.get(), r.release(), m_serviceWorkerRegistration);
PeriodicSyncRegistration* reg = PeriodicSyncRegistration::take(m_resolver.get(), webSyncRegistration, m_serviceWorkerRegistration);
syncRegistrations.append(reg); syncRegistrations.append(reg);
} }
delete (webSyncRegistrations);
m_resolver->resolve(syncRegistrations); m_resolver->resolve(syncRegistrations);
} }
} }
void SyncGetRegistrationsCallbacks::onError(WebSyncError* error) void SyncGetRegistrationsCallbacks::onError(const WebSyncError& error)
{ {
if (!m_resolver->executionContext() || m_resolver->executionContext()->activeDOMObjectsAreStopped()) { if (!m_resolver->executionContext() || m_resolver->executionContext()->activeDOMObjectsAreStopped()) {
SyncError::dispose(error);
return; return;
} }
m_resolver->reject(SyncError::take(m_resolver.get(), error)); m_resolver->reject(SyncError::take(m_resolver.get(), error));
...@@ -189,20 +173,18 @@ SyncGetPermissionStatusCallbacks::~SyncGetPermissionStatusCallbacks() ...@@ -189,20 +173,18 @@ SyncGetPermissionStatusCallbacks::~SyncGetPermissionStatusCallbacks()
{ {
} }
void SyncGetPermissionStatusCallbacks::onSuccess(WebSyncPermissionStatus* status) void SyncGetPermissionStatusCallbacks::onSuccess(WebSyncPermissionStatus status)
{ {
OwnPtr<WebSyncPermissionStatus> statusPtr = adoptPtr(status);
if (!m_resolver->executionContext() || m_resolver->executionContext()->activeDOMObjectsAreStopped()) { if (!m_resolver->executionContext() || m_resolver->executionContext()->activeDOMObjectsAreStopped()) {
return; return;
} }
m_resolver->resolve(permissionString(*statusPtr)); m_resolver->resolve(permissionString(status));
} }
void SyncGetPermissionStatusCallbacks::onError(WebSyncError* error) void SyncGetPermissionStatusCallbacks::onError(const WebSyncError& error)
{ {
if (!m_resolver->executionContext() || m_resolver->executionContext()->activeDOMObjectsAreStopped()) { if (!m_resolver->executionContext() || m_resolver->executionContext()->activeDOMObjectsAreStopped()) {
SyncError::dispose(error);
return; return;
} }
m_resolver->reject(SyncError::take(m_resolver.get(), error)); m_resolver->reject(SyncError::take(m_resolver.get(), error));
......
...@@ -31,8 +31,8 @@ public: ...@@ -31,8 +31,8 @@ public:
SyncRegistrationCallbacks(ScriptPromiseResolver*, ServiceWorkerRegistration*); SyncRegistrationCallbacks(ScriptPromiseResolver*, ServiceWorkerRegistration*);
~SyncRegistrationCallbacks() override; ~SyncRegistrationCallbacks() override;
void onSuccess(WebSyncRegistration*) override; void onSuccess(WebPassOwnPtr<WebSyncRegistration>) override;
void onError(WebSyncError*) override; void onError(const WebSyncError&) override;
private: private:
Persistent<ScriptPromiseResolver> m_resolver; Persistent<ScriptPromiseResolver> m_resolver;
...@@ -50,8 +50,8 @@ public: ...@@ -50,8 +50,8 @@ public:
SyncNotifyWhenDoneCallbacks(ScriptPromiseResolver*, ServiceWorkerRegistration*); SyncNotifyWhenDoneCallbacks(ScriptPromiseResolver*, ServiceWorkerRegistration*);
~SyncNotifyWhenDoneCallbacks() override; ~SyncNotifyWhenDoneCallbacks() override;
void onSuccess(bool*) override; void onSuccess(bool) override;
void onError(WebSyncError*) override; void onError(const WebSyncError&) override;
private: private:
Persistent<ScriptPromiseResolver> m_resolver; Persistent<ScriptPromiseResolver> m_resolver;
...@@ -69,8 +69,8 @@ public: ...@@ -69,8 +69,8 @@ public:
SyncUnregistrationCallbacks(ScriptPromiseResolver*, ServiceWorkerRegistration*); SyncUnregistrationCallbacks(ScriptPromiseResolver*, ServiceWorkerRegistration*);
~SyncUnregistrationCallbacks() override; ~SyncUnregistrationCallbacks() override;
void onSuccess(bool*) override; void onSuccess(bool) override;
void onError(WebSyncError*) override; void onError(const WebSyncError&) override;
private: private:
Persistent<ScriptPromiseResolver> m_resolver; Persistent<ScriptPromiseResolver> m_resolver;
...@@ -87,8 +87,8 @@ public: ...@@ -87,8 +87,8 @@ public:
SyncGetRegistrationsCallbacks(ScriptPromiseResolver*, ServiceWorkerRegistration*); SyncGetRegistrationsCallbacks(ScriptPromiseResolver*, ServiceWorkerRegistration*);
~SyncGetRegistrationsCallbacks() override; ~SyncGetRegistrationsCallbacks() override;
void onSuccess(WebVector<WebSyncRegistration*>*) override; void onSuccess(const WebVector<WebSyncRegistration*>&) override;
void onError(WebSyncError*) override; void onError(const WebSyncError&) override;
private: private:
Persistent<ScriptPromiseResolver> m_resolver; Persistent<ScriptPromiseResolver> m_resolver;
...@@ -104,8 +104,8 @@ public: ...@@ -104,8 +104,8 @@ public:
SyncGetPermissionStatusCallbacks(ScriptPromiseResolver*, ServiceWorkerRegistration*); SyncGetPermissionStatusCallbacks(ScriptPromiseResolver*, ServiceWorkerRegistration*);
~SyncGetPermissionStatusCallbacks() override; ~SyncGetPermissionStatusCallbacks() override;
void onSuccess(WebSyncPermissionStatus*) override; void onSuccess(WebSyncPermissionStatus) override;
void onError(WebSyncError*) override; void onError(const WebSyncError&) override;
private: private:
static String permissionString(WebSyncPermissionStatus); static String permissionString(WebSyncPermissionStatus);
......
...@@ -11,26 +11,20 @@ ...@@ -11,26 +11,20 @@
namespace blink { namespace blink {
DOMException* SyncError::take(ScriptPromiseResolver*, WebSyncError* webErrorRaw) DOMException* SyncError::take(ScriptPromiseResolver*, const WebSyncError& webError)
{ {
OwnPtr<WebSyncError> webError = adoptPtr(webErrorRaw); switch (webError.errorType) {
switch (webError->errorType) {
case WebSyncError::ErrorTypeAbort: case WebSyncError::ErrorTypeAbort:
return DOMException::create(AbortError, webError->message); return DOMException::create(AbortError, webError.message);
case WebSyncError::ErrorTypeNoPermission: case WebSyncError::ErrorTypeNoPermission:
return DOMException::create(InvalidAccessError, webError->message); return DOMException::create(InvalidAccessError, webError.message);
case WebSyncError::ErrorTypeNotFound: case WebSyncError::ErrorTypeNotFound:
return DOMException::create(NotFoundError, webError->message); return DOMException::create(NotFoundError, webError.message);
case WebSyncError::ErrorTypeUnknown: case WebSyncError::ErrorTypeUnknown:
return DOMException::create(UnknownError, webError->message); return DOMException::create(UnknownError, webError.message);
} }
ASSERT_NOT_REACHED(); ASSERT_NOT_REACHED();
return DOMException::create(UnknownError); return DOMException::create(UnknownError);
} }
void SyncError::dispose(WebSyncError* webErrorRaw)
{
delete webErrorRaw;
}
} // namespace blink } // namespace blink
...@@ -16,8 +16,7 @@ class ScriptPromiseResolver; ...@@ -16,8 +16,7 @@ class ScriptPromiseResolver;
class SyncError { class SyncError {
WTF_MAKE_NONCOPYABLE(SyncError); WTF_MAKE_NONCOPYABLE(SyncError);
public: public:
static DOMException* take(ScriptPromiseResolver*, WebSyncError*); static DOMException* take(ScriptPromiseResolver*, const WebSyncError&);
static void dispose(WebSyncError*);
private: private:
SyncError() = delete; SyncError() = delete;
......
...@@ -27,16 +27,9 @@ SyncRegistration* SyncRegistration::create(const WebSyncRegistration& syncRegist ...@@ -27,16 +27,9 @@ SyncRegistration* SyncRegistration::create(const WebSyncRegistration& syncRegist
return new SyncRegistration(syncRegistration.id, options, serviceWorkerRegistration); return new SyncRegistration(syncRegistration.id, options, serviceWorkerRegistration);
} }
SyncRegistration* SyncRegistration::take(ScriptPromiseResolver*, WebSyncRegistration* syncRegistration, ServiceWorkerRegistration* serviceWorkerRegistration) SyncRegistration* SyncRegistration::take(ScriptPromiseResolver*, PassOwnPtr<WebSyncRegistration> registration, ServiceWorkerRegistration* serviceWorkerRegistration)
{ {
OwnPtr<WebSyncRegistration> registration = adoptPtr(syncRegistration); return create(*registration, serviceWorkerRegistration);
return create(*syncRegistration, serviceWorkerRegistration);
}
void SyncRegistration::dispose(WebSyncRegistration* syncRegistration)
{
if (syncRegistration)
delete syncRegistration;
} }
SyncRegistration::SyncRegistration(int64_t id, const SyncRegistrationOptions& options, ServiceWorkerRegistration* serviceWorkerRegistration) SyncRegistration::SyncRegistration(int64_t id, const SyncRegistrationOptions& options, ServiceWorkerRegistration* serviceWorkerRegistration)
......
...@@ -22,8 +22,7 @@ class MODULES_EXPORT SyncRegistration final : public GarbageCollectedFinalized<S ...@@ -22,8 +22,7 @@ class MODULES_EXPORT SyncRegistration final : public GarbageCollectedFinalized<S
DEFINE_WRAPPERTYPEINFO(); DEFINE_WRAPPERTYPEINFO();
public: public:
static SyncRegistration* create(const WebSyncRegistration&, ServiceWorkerRegistration*); static SyncRegistration* create(const WebSyncRegistration&, ServiceWorkerRegistration*);
static SyncRegistration* take(ScriptPromiseResolver*, WebSyncRegistration*, ServiceWorkerRegistration*); static SyncRegistration* take(ScriptPromiseResolver*, PassOwnPtr<WebSyncRegistration>, ServiceWorkerRegistration*);
static void dispose(WebSyncRegistration* registrationRaw);
virtual ~SyncRegistration(); virtual ~SyncRegistration();
......
...@@ -7,14 +7,13 @@ ...@@ -7,14 +7,13 @@
#include "public/platform/WebCallbacks.h" #include "public/platform/WebCallbacks.h"
#include "public/platform/modules/background_sync/WebSyncError.h" #include "public/platform/modules/background_sync/WebSyncError.h"
#include "public/platform/modules/background_sync/WebSyncProvider.h"
namespace blink { namespace blink {
class WebServiceWorkerRegistration; class WebServiceWorkerRegistration;
struct WebSyncRegistration; struct WebSyncRegistration;
using WebSyncRegistrationCallbacks = WebCallbacks<WebSyncRegistration*, WebSyncError*>;
class WebSyncClient { class WebSyncClient {
public: public:
virtual ~WebSyncClient() { } virtual ~WebSyncClient() { }
......
...@@ -7,6 +7,7 @@ ...@@ -7,6 +7,7 @@
#include "public/platform/WebCallbacks.h" #include "public/platform/WebCallbacks.h"
#include "public/platform/WebCommon.h" #include "public/platform/WebCommon.h"
#include "public/platform/WebPassOwnPtr.h"
#include "public/platform/WebString.h" #include "public/platform/WebString.h"
#include "public/platform/WebVector.h" #include "public/platform/WebVector.h"
#include "public/platform/modules/background_sync/WebSyncError.h" #include "public/platform/modules/background_sync/WebSyncError.h"
...@@ -16,12 +17,78 @@ ...@@ -16,12 +17,78 @@
namespace blink { namespace blink {
class WebServiceWorkerRegistration; class WebServiceWorkerRegistration;
template <>
class WebCallbacks<WebPassOwnPtr<WebSyncRegistration>, const WebSyncError&> {
public:
virtual ~WebCallbacks() {}
void onSuccess(WebSyncRegistration* r) { onSuccess(adoptWebPtr(r)); }
void onError(WebSyncError* e)
{
onError(*e);
delete e;
}
virtual void onSuccess(WebPassOwnPtr<WebSyncRegistration>) = 0;
virtual void onError(const WebSyncError&) = 0;
};
using WebSyncRegistrationCallbacks = WebCallbacks<WebPassOwnPtr<WebSyncRegistration>, const WebSyncError&>;
template <>
class WebCallbacks<bool, const WebSyncError&> {
public:
virtual ~WebCallbacks() {}
void onSuccess(bool* r)
{
onSuccess(*r);
delete r;
}
void onError(WebSyncError* e)
{
onError(*e);
delete e;
}
virtual void onSuccess(bool) = 0;
virtual void onError(const WebSyncError&) = 0;
};
using WebSyncNotifyWhenDoneCallbacks = WebCallbacks<bool, const WebSyncError&>;
using WebSyncUnregistrationCallbacks = WebCallbacks<bool, const WebSyncError&>;
template <>
class WebCallbacks<const WebVector<WebSyncRegistration*>&, const WebSyncError&> {
public:
virtual ~WebCallbacks() {}
void onSuccess(WebVector<WebSyncRegistration*>* r)
{
onSuccess(*r);
delete r;
}
void onError(WebSyncError* e)
{
onError(*e);
delete e;
}
virtual void onSuccess(const WebVector<WebSyncRegistration*>&) = 0;
virtual void onError(const WebSyncError&) = 0;
};
using WebSyncGetRegistrationsCallbacks = WebCallbacks<const WebVector<WebSyncRegistration*>&, const WebSyncError&>;
using WebSyncRegistrationCallbacks = WebCallbacks<WebSyncRegistration*, WebSyncError*>; template <>
using WebSyncNotifyWhenDoneCallbacks = WebCallbacks<bool*, WebSyncError*>; class WebCallbacks<WebSyncPermissionStatus, const WebSyncError&> {
using WebSyncUnregistrationCallbacks = WebCallbacks<bool*, WebSyncError*>; public:
using WebSyncGetRegistrationsCallbacks = WebCallbacks<WebVector<WebSyncRegistration*>*, WebSyncError*>; virtual ~WebCallbacks() {}
using WebSyncGetPermissionStatusCallbacks = WebCallbacks<WebSyncPermissionStatus*, WebSyncError*>; void onSuccess(WebSyncPermissionStatus* r)
{
onSuccess(*r);
delete r;
}
void onError(WebSyncError* e)
{
onError(*e);
delete e;
}
virtual void onSuccess(WebSyncPermissionStatus) = 0;
virtual void onError(const WebSyncError&) = 0;
};
using WebSyncGetPermissionStatusCallbacks = WebCallbacks<WebSyncPermissionStatus, const WebSyncError&>;
class WebSyncProvider { class WebSyncProvider {
public: public:
...@@ -58,7 +125,7 @@ public: ...@@ -58,7 +125,7 @@ public:
virtual void notifyWhenDone(int64_t syncId, WebSyncNotifyWhenDoneCallbacks* callbacks) virtual void notifyWhenDone(int64_t syncId, WebSyncNotifyWhenDoneCallbacks* callbacks)
{ {
// TODO(jkarlin): After landing both legs of the notifyWhenDone CLs, make this a pure virtual function. // TODO(jkarlin): After landing both legs of the notifyWhenDone CLs, make this a pure virtual function.
callbacks->onError(new WebSyncError(WebSyncError::ErrorTypeAbort, "Function not implemented.")); callbacks->onError(WebSyncError(WebSyncError::ErrorTypeAbort, "Function not implemented."));
delete callbacks; delete callbacks;
} }
......
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