Index: third_party/mojo/src/mojo/edk/js/waiting_callback.cc |
diff --git a/third_party/mojo/src/mojo/edk/js/waiting_callback.cc b/third_party/mojo/src/mojo/edk/js/waiting_callback.cc |
deleted file mode 100644 |
index 65833f3baed4543e0e42f867ec4ea8869248a06d..0000000000000000000000000000000000000000 |
--- a/third_party/mojo/src/mojo/edk/js/waiting_callback.cc |
+++ /dev/null |
@@ -1,121 +0,0 @@ |
-// Copyright 2014 The Chromium Authors. All rights reserved. |
-// Use of this source code is governed by a BSD-style license that can be |
-// found in the LICENSE file. |
- |
-#include "third_party/mojo/src/mojo/edk/js/waiting_callback.h" |
- |
-#include "base/bind.h" |
-#include "base/message_loop/message_loop.h" |
-#include "gin/per_context_data.h" |
-#include "mojo/public/cpp/environment/environment.h" |
- |
-namespace mojo { |
-namespace js { |
- |
-namespace { |
- |
-v8::Handle<v8::Private> GetHiddenPropertyName(v8::Isolate* isolate) { |
- return v8::Private::ForApi( |
- isolate, gin::StringToV8(isolate, "::mojo::js::WaitingCallback")); |
-} |
- |
-} // namespace |
- |
-gin::WrapperInfo WaitingCallback::kWrapperInfo = { gin::kEmbedderNativeGin }; |
- |
-// static |
-gin::Handle<WaitingCallback> WaitingCallback::Create( |
- v8::Isolate* isolate, |
- v8::Handle<v8::Function> callback, |
- gin::Handle<HandleWrapper> handle_wrapper, |
- MojoHandleSignals signals) { |
- gin::Handle<WaitingCallback> waiting_callback = gin::CreateHandle( |
- isolate, new WaitingCallback(isolate, callback, handle_wrapper)); |
- waiting_callback->wait_id_ = Environment::GetDefaultAsyncWaiter()->AsyncWait( |
- handle_wrapper->get().value(), |
- signals, |
- MOJO_DEADLINE_INDEFINITE, |
- &WaitingCallback::CallOnHandleReady, |
- waiting_callback.get()); |
- return waiting_callback; |
-} |
- |
-void WaitingCallback::Cancel() { |
- if (!wait_id_) |
- return; |
- |
- handle_wrapper_->RemoveCloseObserver(this); |
- handle_wrapper_ = NULL; |
- Environment::GetDefaultAsyncWaiter()->CancelWait(wait_id_); |
- wait_id_ = 0; |
-} |
- |
-WaitingCallback::WaitingCallback(v8::Isolate* isolate, |
- v8::Handle<v8::Function> callback, |
- gin::Handle<HandleWrapper> handle_wrapper) |
- : wait_id_(0), handle_wrapper_(handle_wrapper.get()), weak_factory_(this) { |
- handle_wrapper_->AddCloseObserver(this); |
- v8::Handle<v8::Context> context = isolate->GetCurrentContext(); |
- runner_ = gin::PerContextData::From(context)->runner()->GetWeakPtr(); |
- GetWrapper(isolate) |
- ->SetPrivate(context, GetHiddenPropertyName(isolate), callback) |
- .FromJust(); |
-} |
- |
-WaitingCallback::~WaitingCallback() { |
- Cancel(); |
-} |
- |
-// static |
-void WaitingCallback::CallOnHandleReady(void* closure, MojoResult result) { |
- static_cast<WaitingCallback*>(closure)->OnHandleReady(result); |
-} |
- |
-void WaitingCallback::ClearWaitId() { |
- wait_id_ = 0; |
- handle_wrapper_->RemoveCloseObserver(this); |
- handle_wrapper_ = nullptr; |
-} |
- |
-void WaitingCallback::OnHandleReady(MojoResult result) { |
- ClearWaitId(); |
- CallCallback(result); |
-} |
- |
-void WaitingCallback::CallCallback(MojoResult result) { |
- // ClearWaitId must already have been called. |
- DCHECK(!wait_id_); |
- DCHECK(!handle_wrapper_); |
- |
- if (!runner_) |
- return; |
- |
- gin::Runner::Scope scope(runner_.get()); |
- v8::Isolate* isolate = runner_->GetContextHolder()->isolate(); |
- |
- v8::Handle<v8::Value> hidden_value = |
- GetWrapper(isolate) |
- ->GetPrivate(runner_->GetContextHolder()->context(), |
- GetHiddenPropertyName(isolate)) |
- .ToLocalChecked(); |
- v8::Handle<v8::Function> callback; |
- CHECK(gin::ConvertFromV8(isolate, hidden_value, &callback)); |
- |
- v8::Handle<v8::Value> args[] = { gin::ConvertToV8(isolate, result) }; |
- runner_->Call(callback, runner_->global(), 1, args); |
-} |
- |
-void WaitingCallback::OnWillCloseHandle() { |
- Environment::GetDefaultAsyncWaiter()->CancelWait(wait_id_); |
- |
- // This may be called from GC, so we can't execute Javascript now, call |
- // ClearWaitId explicitly, and CallCallback asynchronously. |
- ClearWaitId(); |
- base::MessageLoop::current()->PostTask( |
- FROM_HERE, |
- base::Bind(&WaitingCallback::CallCallback, weak_factory_.GetWeakPtr(), |
- MOJO_RESULT_INVALID_ARGUMENT)); |
-} |
- |
-} // namespace js |
-} // namespace mojo |