1 // Copyright 2013 The Chromium Authors. All rights reserved. 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef MOJO_APPS_JS_BINDINGS_WAITING_CALLBACK_H_ 6 #define MOJO_APPS_JS_BINDINGS_WAITING_CALLBACK_H_ 7 8 #include "gin/handle.h" 9 #include "gin/runner.h" 10 #include "gin/wrappable.h" 11 #include "mojo/public/bindings/lib/bindings_support.h" 12 13 namespace mojo { 14 namespace js { 15 16 class WaitingCallback : public gin::Wrappable<WaitingCallback>, 17 public BindingsSupport::AsyncWaitCallback { 18 public: 19 static gin::WrapperInfo kWrapperInfo; 20 21 static gin::Handle<WaitingCallback> Create( 22 v8::Isolate* isolate, v8::Handle<v8::Function> callback); 23 24 static void EnsureRegistered(v8::Isolate* isolate); 25 26 BindingsSupport::AsyncWaitID wait_id() const { 27 return wait_id_; 28 } 29 30 void set_wait_id(BindingsSupport::AsyncWaitID wait_id) { 31 wait_id_ = wait_id; 32 } 33 34 private: 35 WaitingCallback(v8::Isolate* isolate, v8::Handle<v8::Function> callback); 36 virtual ~WaitingCallback(); 37 38 virtual void OnHandleReady(MojoResult result) OVERRIDE; 39 40 base::WeakPtr<gin::Runner> runner_; 41 BindingsSupport::AsyncWaitID wait_id_; 42 43 DISALLOW_COPY_AND_ASSIGN(WaitingCallback); 44 }; 45 46 } // namespace js 47 } // namespace mojo 48 49 #endif // MOJO_APPS_JS_BINDINGS_WAITING_CALLBACK_H_ 50