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 PPAPI_NACL_IRT_MANIFEST_SERVICE_H_
6#define PPAPI_NACL_IRT_MANIFEST_SERVICE_H_
7
8#include "base/macros.h"
9#include "base/memory/ref_counted.h"
10#include "base/memory/scoped_ptr.h"
11
12namespace base {
13class MessageLoopProxy;
14class WaitableEvent;
15}  // namespace base
16
17namespace IPC {
18struct ChannelHandle;
19class ChannelProxy;
20class SyncMessageFilter;
21}  // namespace IPC
22
23namespace ppapi {
24
25class ManifestService {
26 public:
27  ManifestService(const IPC::ChannelHandle& handle,
28                  scoped_refptr<base::MessageLoopProxy> io_message_loop,
29                  base::WaitableEvent* shutdown_event);
30  ~ManifestService();
31
32  void StartupInitializationComplete();
33  bool OpenResource(const char* file, int* fd);
34
35 private:
36  scoped_ptr<IPC::ChannelProxy> channel_;
37  scoped_refptr<IPC::SyncMessageFilter> filter_;
38
39  DISALLOW_COPY_AND_ASSIGN(ManifestService);
40};
41
42}  // namespace ppapi
43
44#endif  // PPAPI_NACL_IRT_MANIFEST_SERVICE_H_
45