Commit a724ffdc authored by yhirano's avatar yhirano Committed by Commit bot

CallbackPromiseAdapter cleanup

Use std::move and delete unnecessary functions.

BUG=None

Review-Url: https://codereview.chromium.org/2292203003
Cr-Commit-Position: refs/heads/master@{#415661}
parent 1cf2e5dc
...@@ -36,6 +36,7 @@ ...@@ -36,6 +36,7 @@
#include "wtf/PtrUtil.h" #include "wtf/PtrUtil.h"
#include "wtf/TypeTraits.h" #include "wtf/TypeTraits.h"
#include <memory> #include <memory>
#include <utility>
namespace blink { namespace blink {
...@@ -92,9 +93,7 @@ namespace blink { ...@@ -92,9 +93,7 @@ namespace blink {
// //
// In order to implement the above exceptions, we have template classes below. // In order to implement the above exceptions, we have template classes below.
// OnSuccess and OnError provide onSuccess and onError implementation, and there // OnSuccess and OnError provide onSuccess and onError implementation, and there
// are utility templates that provide // are utility templates that provide the trivial WebType holder.
// - std::unique_ptr - WebPassOwnPtr translation ([Web]PassType[Impl], adopt, pass),
// - trivial WebType holder (TrivialWebTypeHolder).
namespace internal { namespace internal {
...@@ -116,11 +115,6 @@ private: ...@@ -116,11 +115,6 @@ private:
template <typename T> static CallbackPromiseAdapterTrivialWebTypeHolder<T> webTypeHolderMatcher(...); template <typename T> static CallbackPromiseAdapterTrivialWebTypeHolder<T> webTypeHolderMatcher(...);
template <typename T> using WebTypeHolder = decltype(webTypeHolderMatcher<T>(nullptr)); template <typename T> using WebTypeHolder = decltype(webTypeHolderMatcher<T>(nullptr));
template <typename T> static T& adopt(T& x) { return x; }
template <typename T> static std::unique_ptr<T> adopt(std::unique_ptr<T>& x) { return std::move(x); }
template <typename T> static T pass(T& x) { return x; }
template <typename T> static std::unique_ptr<T> pass(std::unique_ptr<T>& x) { return std::move(x); }
template <typename S, typename T> template <typename S, typename T>
class Base : public WebCallbacks<typename S::WebType, typename T::WebType> { class Base : public WebCallbacks<typename S::WebType, typename T::WebType> {
public: public:
...@@ -135,13 +129,12 @@ private: ...@@ -135,13 +129,12 @@ private:
class OnSuccess : public Base<S, T> { class OnSuccess : public Base<S, T> {
public: public:
explicit OnSuccess(ScriptPromiseResolver* resolver) : Base<S, T>(resolver) {} explicit OnSuccess(ScriptPromiseResolver* resolver) : Base<S, T>(resolver) {}
void onSuccess(typename S::WebType r) override void onSuccess(typename S::WebType result) override
{ {
typename S::WebType result(adopt(r));
ScriptPromiseResolver* resolver = this->resolver(); ScriptPromiseResolver* resolver = this->resolver();
if (!resolver->getExecutionContext() || resolver->getExecutionContext()->activeDOMObjectsAreStopped()) if (!resolver->getExecutionContext() || resolver->getExecutionContext()->activeDOMObjectsAreStopped())
return; return;
resolver->resolve(S::take(resolver, pass(result))); resolver->resolve(S::take(resolver, std::move(result)));
} }
}; };
template <typename T> template <typename T>
...@@ -162,12 +155,11 @@ private: ...@@ -162,12 +155,11 @@ private:
explicit OnError(ScriptPromiseResolver* resolver) : OnSuccess<S, T>(resolver) {} explicit OnError(ScriptPromiseResolver* resolver) : OnSuccess<S, T>(resolver) {}
void onError(typename T::WebType e) override void onError(typename T::WebType e) override
{ {
typename T::WebType result(adopt(e));
ScriptPromiseResolver* resolver = this->resolver(); ScriptPromiseResolver* resolver = this->resolver();
if (!resolver->getExecutionContext() || resolver->getExecutionContext()->activeDOMObjectsAreStopped()) if (!resolver->getExecutionContext() || resolver->getExecutionContext()->activeDOMObjectsAreStopped())
return; return;
ScriptState::Scope scope(resolver->getScriptState()); ScriptState::Scope scope(resolver->getScriptState());
resolver->reject(T::take(resolver, pass(result))); resolver->reject(T::take(resolver, std::move(e)));
} }
}; };
template <typename S> template <typename S>
......
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