10529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Copyright 2014 The Chromium Authors. All rights reserved.
20529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// Use of this source code is governed by a BSD-style license that can be
30529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch// found in the LICENSE file.
40529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
50529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#ifndef PPAPI_NACL_IRT_MANIFEST_SERVICE_H_
60529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#define PPAPI_NACL_IRT_MANIFEST_SERVICE_H_
70529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
80529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "base/macros.h"
90529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "base/memory/ref_counted.h"
100529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "base/memory/scoped_ptr.h"
110529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
120529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochnamespace base {
130529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochclass MessageLoopProxy;
140529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochclass WaitableEvent;
150529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch}  // namespace base
160529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
170529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochnamespace IPC {
180529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochstruct ChannelHandle;
190529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochclass ChannelProxy;
200529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochclass SyncMessageFilter;
210529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch}  // namespace IPC
220529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
230529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochnamespace ppapi {
240529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
250529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochclass ManifestService {
260529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch public:
270529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  ManifestService(const IPC::ChannelHandle& handle,
280529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch                  scoped_refptr<base::MessageLoopProxy> io_message_loop,
290529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch                  base::WaitableEvent* shutdown_event);
300529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  ~ManifestService();
310529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
320529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  void StartupInitializationComplete();
33010d83a9304c5a91596085d917d248abff47903aTorne (Richard Coles)  bool OpenResource(const char* file, int* fd);
340529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
350529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch private:
360529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  scoped_ptr<IPC::ChannelProxy> channel_;
370529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  scoped_refptr<IPC::SyncMessageFilter> filter_;
380529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
390529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  DISALLOW_COPY_AND_ASSIGN(ManifestService);
400529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch};
410529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
420529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch}  // namespace ppapi
430529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch
440529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#endif  // PPAPI_NACL_IRT_MANIFEST_SERVICE_H_
45