| Index: chrome/browser/nacl_host/pnacl_host.h
|
| diff --git a/chrome/browser/nacl_host/pnacl_host.h b/chrome/browser/nacl_host/pnacl_host.h
|
| deleted file mode 100644
|
| index 782499fb0d675077703ae01dd8108beda7336eca..0000000000000000000000000000000000000000
|
| --- a/chrome/browser/nacl_host/pnacl_host.h
|
| +++ /dev/null
|
| @@ -1,176 +0,0 @@
|
| -// Copyright 2013 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 CHROME_BROWSER_NACL_HOST_PNACL_HOST_H_
|
| -#define CHROME_BROWSER_NACL_HOST_PNACL_HOST_H_
|
| -
|
| -#include <map>
|
| -
|
| -#include "base/callback_forward.h"
|
| -#include "base/memory/singleton.h"
|
| -#include "base/memory/weak_ptr.h"
|
| -#include "base/threading/thread_checker.h"
|
| -#include "chrome/browser/nacl_host/nacl_file_host.h"
|
| -#include "components/nacl/common/pnacl_types.h"
|
| -#include "ipc/ipc_platform_file.h"
|
| -
|
| -namespace net {
|
| -class DrainableIOBuffer;
|
| -}
|
| -
|
| -namespace pnacl {
|
| -class PnaclHostTest;
|
| -class PnaclTranslationCache;
|
| -}
|
| -
|
| -// Shared state (translation cache) and common utilities (temp file creation)
|
| -// for all PNaCl translations. Unless otherwise specified, all methods should be
|
| -// called on the IO thread.
|
| -class PnaclHost {
|
| - public:
|
| - typedef base::Callback<void(base::PlatformFile)> TempFileCallback;
|
| - typedef base::Callback<void(base::PlatformFile, bool is_hit)> NexeFdCallback;
|
| -
|
| - static PnaclHost* GetInstance();
|
| -
|
| - PnaclHost();
|
| - ~PnaclHost();
|
| -
|
| - // Initialize cache backend. GetNexeFd will also initialize the backend if
|
| - // necessary, but calling Init ahead of time will minimize the latency.
|
| - void Init();
|
| -
|
| - // Creates a temporary file that will be deleted when the last handle
|
| - // is closed, or earlier. Returns a PlatformFile handle.
|
| - void CreateTemporaryFile(TempFileCallback cb);
|
| -
|
| - // Create a temporary file, which will be deleted by the time the last
|
| - // handle is closed (or earlier on POSIX systems), to use for the nexe
|
| - // with the cache information given in |cache_info|. The specific instance
|
| - // is identified by the combination of |render_process_id| and |pp_instance|.
|
| - // Returns by calling |cb| with a PlatformFile handle.
|
| - // If the nexe is already present
|
| - // in the cache, |is_hit| is set to true and the contents of the nexe
|
| - // have been copied into the temporary file. Otherwise |is_hit| is set to
|
| - // false and the temporary file will be writeable.
|
| - // Currently the implementation is a stub, which always sets is_hit to false
|
| - // and calls the implementation of CreateTemporaryFile.
|
| - // If the cache request was a miss, the caller is expected to call
|
| - // TranslationFinished after it finishes translation to allow the nexe to be
|
| - // stored in the cache.
|
| - // The returned temp fd may be closed at any time by PnaclHost, so it should
|
| - // be duplicated (e.g. with IPC::GetFileHandleForProcess) before the callback
|
| - // returns.
|
| - // If |is_incognito| is true, the nexe will not be stored
|
| - // in the cache, but the renderer is still expected to call
|
| - // TranslationFinished.
|
| - void GetNexeFd(int render_process_id,
|
| - int render_view_id,
|
| - int pp_instance,
|
| - bool is_incognito,
|
| - const nacl::PnaclCacheInfo& cache_info,
|
| - const NexeFdCallback& cb);
|
| -
|
| - // Called after the translation of a pexe instance identified by
|
| - // |render_process_id| and |pp_instance| finishes. If |success| is true,
|
| - // store the nexe translated for the instance in the cache.
|
| - void TranslationFinished(int render_process_id,
|
| - int pp_instance,
|
| - bool success);
|
| -
|
| - // Called when the renderer identified by |render_process_id| is closing.
|
| - // Clean up any outstanding translations for that renderer. If there are no
|
| - // more pending translations, the backend is freed, allowing it to flush.
|
| - void RendererClosing(int render_process_id);
|
| -
|
| - // Doom all entries between |initial_time| and |end_time|. Like disk_cache_,
|
| - // PnaclHost supports supports unbounded deletes in either direction by using
|
| - // null Time values for either argument. |callback| will be called on the UI
|
| - // thread when finished.
|
| - void ClearTranslationCacheEntriesBetween(base::Time initial_time,
|
| - base::Time end_time,
|
| - const base::Closure& callback);
|
| -
|
| - // Return the number of tracked translations or FD requests currently pending.
|
| - size_t pending_translations() { return pending_translations_.size(); }
|
| -
|
| - private:
|
| - // PnaclHost is a singleton because there is only one translation cache, and
|
| - // so that the BrowsingDataRemover can clear it even if no translation has
|
| - // ever been started.
|
| - friend struct DefaultSingletonTraits<PnaclHost>;
|
| - friend class pnacl::PnaclHostTest;
|
| - enum CacheState {
|
| - CacheUninitialized,
|
| - CacheInitializing,
|
| - CacheReady
|
| - };
|
| - class PendingTranslation {
|
| - public:
|
| - PendingTranslation();
|
| - ~PendingTranslation();
|
| - base::ProcessHandle process_handle;
|
| - int render_view_id;
|
| - base::PlatformFile nexe_fd;
|
| - bool got_nexe_fd;
|
| - bool got_cache_reply;
|
| - bool got_cache_hit;
|
| - bool is_incognito;
|
| - scoped_refptr<net::DrainableIOBuffer> nexe_read_buffer;
|
| - NexeFdCallback callback;
|
| - std::string cache_key;
|
| - nacl::PnaclCacheInfo cache_info;
|
| - };
|
| -
|
| - typedef std::pair<int, int> TranslationID;
|
| - typedef std::map<TranslationID, PendingTranslation> PendingTranslationMap;
|
| - static bool TranslationMayBeCached(
|
| - const PendingTranslationMap::iterator& entry);
|
| -
|
| - void InitForTest(base::FilePath temp_dir);
|
| - void OnCacheInitialized(int net_error);
|
| -
|
| - static void DoCreateTemporaryFile(base::FilePath temp_dir_,
|
| - TempFileCallback cb);
|
| -
|
| - // GetNexeFd common steps
|
| - void SendCacheQueryAndTempFileRequest(const std::string& key,
|
| - const TranslationID& id);
|
| - void OnCacheQueryReturn(const TranslationID& id,
|
| - int net_error,
|
| - scoped_refptr<net::DrainableIOBuffer> buffer);
|
| - void OnTempFileReturn(const TranslationID& id, base::PlatformFile fd);
|
| - void CheckCacheQueryReady(const PendingTranslationMap::iterator& entry);
|
| -
|
| - // GetNexeFd miss path
|
| - void ReturnMiss(const PendingTranslationMap::iterator& entry);
|
| - static scoped_refptr<net::DrainableIOBuffer> CopyFileToBuffer(
|
| - base::PlatformFile fd);
|
| - void StoreTranslatedNexe(TranslationID id,
|
| - scoped_refptr<net::DrainableIOBuffer>);
|
| - void OnTranslatedNexeStored(const TranslationID& id, int net_error);
|
| - void RequeryMatchingTranslations(const std::string& key);
|
| -
|
| - // GetNexeFd hit path
|
| - static int CopyBufferToFile(base::PlatformFile fd,
|
| - scoped_refptr<net::DrainableIOBuffer> buffer);
|
| - void OnBufferCopiedToTempFile(const TranslationID& id, int file_error);
|
| -
|
| - void OnEntriesDoomed(const base::Closure& callback, int net_error);
|
| -
|
| - void DeInitIfSafe();
|
| -
|
| - // Operations which are pending with the cache backend, which we should
|
| - // wait for before destroying it (see comment on DeInitIfSafe).
|
| - int pending_backend_operations_;
|
| - CacheState cache_state_;
|
| - base::FilePath temp_dir_;
|
| - scoped_ptr<pnacl::PnaclTranslationCache> disk_cache_;
|
| - PendingTranslationMap pending_translations_;
|
| - base::ThreadChecker thread_checker_;
|
| - base::WeakPtrFactory<PnaclHost> weak_factory_;
|
| - DISALLOW_COPY_AND_ASSIGN(PnaclHost);
|
| -};
|
| -
|
| -#endif // CHROME_BROWSER_NACL_HOST_PNACL_HOST_H_
|
|
|