// Copyright 2013 The Chromium Authors // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_NACL_BROWSER_NACL_BROWSER_H_ #define COMPONENTS_NACL_BROWSER_NACL_BROWSER_H_ #include <stdint.h> #include <memory> #include "base/containers/circular_deque.h" #include "base/containers/lru_cache.h" #include "base/files/file.h" #include "base/functional/bind.h" #include "base/task/sequenced_task_runner.h" #include "base/task/thread_pool.h" #include "base/time/time.h" #include "build/build_config.h" #include "components/nacl/browser/nacl_browser_delegate.h" #include "components/nacl/browser/nacl_validation_cache.h" namespace base { class FileProxy; } namespace nacl { static const int kGdbDebugStubPortUnknown = …; static const int kGdbDebugStubPortUnused = …; // Keep the cache bounded to an arbitrary size. If it's too small, useful // entries could be evicted when multiple .nexes are loaded at once. On the // other hand, entries are not always claimed (and hence removed), so the size // of the cache will likely saturate at its maximum size. // Entries may not be claimed for two main reasons. 1) the NaCl process could // be killed while it is loading. 2) the trusted NaCl plugin opens files using // the code path but doesn't resolve them. // TODO(ncbray) don't cache files that the plugin will not resolve. static const int kFilePathCacheSize = …; // Open an immutable executable file that can be mmapped (or a read-only file). // This function should only be called on a thread that can perform file IO. base::File OpenNaClReadExecImpl(const base::FilePath& file_path, bool is_executable); // Represents shared state for all NaClProcessHost objects in the browser. class NaClBrowser { … }; } // namespace nacl #endif // COMPONENTS_NACL_BROWSER_NACL_BROWSER_H_