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