// Copyright (c) 2012 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef PPAPI_PROXY_BROWSER_FONT_SINGLETON_RESOURCE_H_
#define PPAPI_PROXY_BROWSER_FONT_SINGLETON_RESOURCE_H_

#include "base/macros.h"
#include "ppapi/proxy/connection.h"
#include "ppapi/proxy/plugin_resource.h"
#include "ppapi/thunk/ppb_browser_font_singleton_api.h"

namespace ppapi {
namespace proxy {

// This handles the singleton calls (that don't take a PP_Resource parameter)
// on the browser font interface
class BrowserFontSingletonResource
    : public PluginResource,
      public thunk::PPB_BrowserFont_Singleton_API {
 public:
  BrowserFontSingletonResource(Connection connection, PP_Instance instance);
  ~BrowserFontSingletonResource() override;

  // Resource override.
  thunk::PPB_BrowserFont_Singleton_API*
      AsPPB_BrowserFont_Singleton_API() override;

  // thunk::PPB_BrowserFontSingleton_API implementation.
  PP_Var GetFontFamilies(PP_Instance instance) override;

 private:
  // Lazily-filled-in list of font families.
  std::string families_;

  DISALLOW_COPY_AND_ASSIGN(BrowserFontSingletonResource);
};

}  // namespace proxy
}  // namespace ppapi

#endif  // PPAPI_PROXY_BROWSER_FONT_SINGLETON_RESOURCE_H_

