Home | History | Annotate | Download | only in pepper_container_app
      1 // Copyright 2014 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_EXAMPLES_PEPPER_CONTAINER_APP_PLUGIN_INSTANCE_H_
      6 #define MOJO_EXAMPLES_PEPPER_CONTAINER_APP_PLUGIN_INSTANCE_H_
      7 
      8 #include "base/macros.h"
      9 #include "base/memory/ref_counted.h"
     10 #include "mojo/examples/pepper_container_app/plugin_module.h"
     11 #include "mojo/examples/pepper_container_app/resource_creation_impl.h"
     12 #include "ppapi/c/pp_rect.h"
     13 #include "ppapi/shared_impl/scoped_pp_resource.h"
     14 #include "ppapi/thunk/ppb_instance_api.h"
     15 
     16 namespace mojo {
     17 namespace examples {
     18 
     19 class PluginInstance : public ppapi::thunk::PPB_Instance_API {
     20  public:
     21   explicit PluginInstance(scoped_refptr<PluginModule> plugin_module);
     22   virtual ~PluginInstance();
     23 
     24   // Notifies the plugin that a new instance has been created.
     25   bool DidCreate();
     26   // Notifies the plugin that the instance has been destroyed.
     27   void DidDestroy();
     28   // Notifies the plugin that the position or size of the instance has changed.
     29   void DidChangeView(const PP_Rect& bounds);
     30   // Notifies the plugin that the Graphics 3D context has been invalidated.
     31   void Graphics3DContextLost();
     32 
     33   // Returns true if |device| has been bound as the current display surface.
     34   bool IsBoundGraphics(PP_Resource device) const;
     35 
     36   PP_Instance pp_instance() const { return pp_instance_; }
     37   ResourceCreationImpl* resource_creation() { return &resource_creation_; }
     38   PluginModule* plugin_module() { return plugin_module_.get(); }
     39 
     40   // ppapi::thunk::PPB_Instance_API implementation.
     41   virtual PP_Bool BindGraphics(PP_Instance instance,
     42                                PP_Resource device) OVERRIDE;
     43   virtual PP_Bool IsFullFrame(PP_Instance instance) OVERRIDE;
     44   virtual const ppapi::ViewData* GetViewData(PP_Instance instance) OVERRIDE;
     45   virtual PP_Bool FlashIsFullscreen(PP_Instance instance) OVERRIDE;
     46   virtual PP_Var GetWindowObject(PP_Instance instance) OVERRIDE;
     47   virtual PP_Var GetOwnerElementObject(PP_Instance instance) OVERRIDE;
     48   virtual PP_Var ExecuteScript(PP_Instance instance,
     49                                PP_Var script,
     50                                PP_Var* exception) OVERRIDE;
     51   virtual uint32_t GetAudioHardwareOutputSampleRate(
     52       PP_Instance instance) OVERRIDE;
     53   virtual uint32_t GetAudioHardwareOutputBufferSize(
     54       PP_Instance instance) OVERRIDE;
     55   virtual PP_Var GetDefaultCharSet(PP_Instance instance) OVERRIDE;
     56   virtual void Log(PP_Instance instance,
     57                    PP_LogLevel log_level,
     58                    PP_Var value) OVERRIDE;
     59   virtual void LogWithSource(PP_Instance instance,
     60                              PP_LogLevel log_level,
     61                              PP_Var source,
     62                              PP_Var value) OVERRIDE;
     63   virtual void SetPluginToHandleFindRequests(PP_Instance instance) OVERRIDE;
     64   virtual void NumberOfFindResultsChanged(PP_Instance instance,
     65                                           int32_t total,
     66                                           PP_Bool final_result) OVERRIDE;
     67   virtual void SelectedFindResultChanged(PP_Instance instance,
     68                                          int32_t index) OVERRIDE;
     69   virtual void SetTickmarks(PP_Instance instance,
     70                             const PP_Rect* tickmarks,
     71                             uint32_t count) OVERRIDE;
     72   virtual PP_Bool IsFullscreen(PP_Instance instance) OVERRIDE;
     73   virtual PP_Bool SetFullscreen(PP_Instance instance,
     74                                 PP_Bool fullscreen) OVERRIDE;
     75   virtual PP_Bool GetScreenSize(PP_Instance instance, PP_Size* size) OVERRIDE;
     76   virtual ppapi::Resource* GetSingletonResource(
     77       PP_Instance instance, ppapi::SingletonResourceID id) OVERRIDE;
     78   virtual int32_t RequestInputEvents(PP_Instance instance,
     79                                      uint32_t event_classes) OVERRIDE;
     80   virtual int32_t RequestFilteringInputEvents(PP_Instance instance,
     81                                               uint32_t event_classes) OVERRIDE;
     82   virtual void ClearInputEventRequest(PP_Instance instance,
     83                                       uint32_t event_classes) OVERRIDE;
     84   virtual void StartTrackingLatency(PP_Instance instance) OVERRIDE;
     85   virtual void PostMessage(PP_Instance instance, PP_Var message) OVERRIDE;
     86   virtual int32_t RegisterMessageHandler(PP_Instance instance,
     87                                          void* user_data,
     88                                          const PPP_MessageHandler_0_2* handler,
     89                                          PP_Resource message_loop) OVERRIDE;
     90   virtual int32_t RegisterMessageHandler_1_1_Deprecated(
     91       PP_Instance instance,
     92       void* user_data,
     93       const PPP_MessageHandler_0_1_Deprecated* handler,
     94       PP_Resource message_loop) OVERRIDE;
     95   virtual void UnregisterMessageHandler(PP_Instance instance) OVERRIDE;
     96   virtual PP_Bool SetCursor(PP_Instance instance,
     97                             PP_MouseCursor_Type type,
     98                             PP_Resource image,
     99                             const PP_Point* hot_spot) OVERRIDE;
    100   virtual int32_t LockMouse(
    101       PP_Instance instance,
    102       scoped_refptr<ppapi::TrackedCallback> callback) OVERRIDE;
    103   virtual void UnlockMouse(PP_Instance instance) OVERRIDE;
    104   virtual void SetTextInputType(PP_Instance instance,
    105                                 PP_TextInput_Type type) OVERRIDE;
    106   virtual void UpdateCaretPosition(PP_Instance instance,
    107                                    const PP_Rect& caret,
    108                                    const PP_Rect& bounding_box) OVERRIDE;
    109   virtual void CancelCompositionText(PP_Instance instance) OVERRIDE;
    110   virtual void SelectionChanged(PP_Instance instance) OVERRIDE;
    111   virtual void UpdateSurroundingText(PP_Instance instance,
    112                                      const char* text,
    113                                      uint32_t caret,
    114                                      uint32_t anchor) OVERRIDE;
    115   virtual void ZoomChanged(PP_Instance instance, double factor) OVERRIDE;
    116   virtual void ZoomLimitsChanged(PP_Instance instance,
    117                                  double minimum_factor,
    118                                  double maximum_factor) OVERRIDE;
    119   virtual PP_Var GetDocumentURL(PP_Instance instance,
    120                                 PP_URLComponents_Dev* components) OVERRIDE;
    121   virtual void PromiseResolved(PP_Instance instance,
    122                                uint32 promise_id) OVERRIDE;
    123   virtual void PromiseResolvedWithSession(PP_Instance instance,
    124                                           uint32 promise_id,
    125                                           PP_Var web_session_id_var) OVERRIDE;
    126   virtual void PromiseResolvedWithKeyIds(PP_Instance instance,
    127                                          uint32 promise_id,
    128                                          PP_Var key_ids_var) OVERRIDE;
    129   virtual void PromiseRejected(PP_Instance instance,
    130                                uint32 promise_id,
    131                                PP_CdmExceptionCode exception_code,
    132                                uint32 system_code,
    133                                PP_Var error_description_var) OVERRIDE;
    134   virtual void SessionMessage(PP_Instance instance,
    135                               PP_Var web_session_id_var,
    136                               PP_Var message_var,
    137                               PP_Var destination_url_var) OVERRIDE;
    138   virtual void SessionKeysChange(PP_Instance instance,
    139                                  PP_Var web_session_id_var,
    140                                  PP_Bool has_additional_usable_key) OVERRIDE;
    141   virtual void SessionExpirationChange(PP_Instance instance,
    142                                        PP_Var web_session_id_var,
    143                                        PP_Time new_expiry_time) OVERRIDE;
    144   virtual void SessionReady(PP_Instance instance,
    145                             PP_Var web_session_id_var) OVERRIDE;
    146   virtual void SessionClosed(PP_Instance instance,
    147                              PP_Var web_session_id_var) OVERRIDE;
    148   virtual void SessionError(PP_Instance instance,
    149                             PP_Var web_session_id_var,
    150                             PP_CdmExceptionCode exception_code,
    151                             uint32 system_code,
    152                             PP_Var error_description_var) OVERRIDE;
    153   virtual void DeliverBlock(PP_Instance instance,
    154                             PP_Resource decrypted_block,
    155                             const PP_DecryptedBlockInfo* block_info) OVERRIDE;
    156   virtual void DecoderInitializeDone(PP_Instance instance,
    157                                      PP_DecryptorStreamType decoder_type,
    158                                      uint32_t request_id,
    159                                      PP_Bool success) OVERRIDE;
    160   virtual void DecoderDeinitializeDone(PP_Instance instance,
    161                                        PP_DecryptorStreamType decoder_type,
    162                                        uint32_t request_id) OVERRIDE;
    163   virtual void DecoderResetDone(PP_Instance instance,
    164                                 PP_DecryptorStreamType decoder_type,
    165                                 uint32_t request_id) OVERRIDE;
    166   virtual void DeliverFrame(PP_Instance instance,
    167                             PP_Resource decrypted_frame,
    168                             const PP_DecryptedFrameInfo* frame_info) OVERRIDE;
    169   virtual void DeliverSamples(
    170       PP_Instance instance,
    171       PP_Resource audio_frames,
    172       const PP_DecryptedSampleInfo* sample_info) OVERRIDE;
    173   virtual PP_Var ResolveRelativeToDocument(
    174       PP_Instance instance,
    175       PP_Var relative,
    176       PP_URLComponents_Dev* components) OVERRIDE;
    177   virtual PP_Bool DocumentCanRequest(PP_Instance instance, PP_Var url) OVERRIDE;
    178   virtual PP_Bool DocumentCanAccessDocument(PP_Instance instance,
    179                                             PP_Instance target) OVERRIDE;
    180   virtual PP_Var GetPluginInstanceURL(
    181       PP_Instance instance,
    182       PP_URLComponents_Dev* components) OVERRIDE;
    183   virtual PP_Var GetPluginReferrerURL(
    184       PP_Instance instance,
    185       PP_URLComponents_Dev* components) OVERRIDE;
    186 
    187  private:
    188   PP_Instance pp_instance_;
    189   ResourceCreationImpl resource_creation_;
    190   scoped_refptr<PluginModule> plugin_module_;
    191   ppapi::ScopedPPResource bound_graphics_;
    192 
    193   DISALLOW_COPY_AND_ASSIGN(PluginInstance);
    194 };
    195 
    196 }  // namespace examples
    197 }  // namespace mojo
    198 
    199 #endif  // MOJO_EXAMPLES_PEPPER_CONTAINER_APP_PLUGIN_INSTANCE_H_
    200