Home | History | Annotate | Download | only in bindings
      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