// Copyright 2019 The TAL Authors. All rights reserved.
#ifndef TEST_EXTENSION_MANAGER_IMPL_H_
#define TEST_EXTENSION_MANAGER_IMPL_H_

#include "public/iextension_manager.h"
#include "public/iextension.h"
#include "public/iextension_api_delegate.h"

using namespace owcr::extension;

class ExtensionManagerImpl : public IExtensionManager {
 public:
  ExtensionManagerImpl() {}
  virtual ~ExtensionManagerImpl() {}

  class EventNotifyImpl : public IExtensionEventNotify {
   public:
    virtual ~EventNotifyImpl() {}

    virtual void OnEvent(
      const char* event_name,
      int event_name_length,
      const char* event_json_params,
      int event_json_parasm_length);
  };

  bool InitExtension();
  virtual bool GetVersionAPI(EXTENSION_MANAGER_VERSION_NUM num, void** api);

  // IEM_V_1
  IExtensionNetworkDelegate* GetNetworkDelegate() override;
  IExtensionMediaStreamDelegate* GetMediaStreamDelegate() override;
  IExtensionThreadDelegate* GetThreadDelegate() override;
  IExtensionPagesDelegate* GetPagesDeleaget() override;
  IExtensionPagesDelegate* GetReportDeleaget() override;
  IExtensionApiDelegate* GetApiDelegate() override;
  IExtensionMediaApplyDelegate* GetMediaApplyDelegate() override;
};
#endif  // TEST_EXTENSION_MANAGER_IMPL_H_
