1effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
2effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// found in the LICENSE file.
4effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
5effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#ifndef MOJO_EXAMPLES_PEPPER_CONTAINER_APP_INTERFACE_LIST_H_
6effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#define MOJO_EXAMPLES_PEPPER_CONTAINER_APP_INTERFACE_LIST_H_
7effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
8effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include <map>
9effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include <string>
10effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
11effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#include "base/macros.h"
12effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
13effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochnamespace mojo {
14effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochnamespace examples {
15effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
16effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// InterfaceList maintains the mapping from Pepper interface names to
17effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch// interface pointers.
18effb81e5f8246d0db0270817048dc992db66e9fbBen Murdochclass InterfaceList {
19effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch public:
20effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  InterfaceList();
21effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  ~InterfaceList();
22effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
23effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  static InterfaceList* GetInstance();
24effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
25effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  const void* GetBrowserInterface(const std::string& name) const;
26effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
27effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch private:
28effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  typedef std::map<std::string, const void*> NameToInterfaceMap;
29effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  NameToInterfaceMap browser_interfaces_;
30effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
31effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch  DISALLOW_COPY_AND_ASSIGN(InterfaceList);
32effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch};
33effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
34effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}  // namespace examples
35effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch}  // namespace mojo
36effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch
37effb81e5f8246d0db0270817048dc992db66e9fbBen Murdoch#endif  // MOJO_EXAMPLES_PEPPER_CONTAINER_APP_INTERFACE_LIST_H_
38