Home | History | Annotate | Download | only in plugin
      1 // Copyright (c) 2012 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 NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_CALLBACK_SOURCE_H
      6 #define NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_CALLBACK_SOURCE_H
      7 
      8 #include "ppapi/cpp/completion_callback.h"
      9 
     10 namespace plugin {
     11 
     12 // Classes that implement this interface can be used with FileDownloader's
     13 // DOWNLOAD_STREAM mode. For each chunk of the file as it downloads,
     14 // The FileDownloader will get a callback of type
     15 // pp::CompletionCallbackWithOutput<std::vector<char>*> using the
     16 // GetCallback function, and call it immediately, passing a pointer to a
     17 // vector with the data as the output field. The class is templatized just
     18 // in case there are any other use cases in the future.
     19 // This class really only exists as a way to get callbacks
     20 // bound to an object (i.e. we don't need the asynchronous behavior of PPAPI)
     21 // All we really need is tr1::function or base::bind or some such, but we don't
     22 // have those in the plugin.
     23 
     24 template<class T>
     25 class CallbackSource {
     26  public:
     27   virtual ~CallbackSource();
     28   // Returns a callback from callback_factory's NewCallbackWithOutput,
     29   // bound to the implementing object.
     30   virtual pp::CompletionCallbackWithOutput<T> GetCallback() = 0;
     31 };
     32 }
     33 #endif // NATIVE_CLIENT_SRC_TRUSTED_PLUGIN_CALLBACK_SOURCE_H
     34