Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(5060)

Unified Diff: chrome/browser/nacl_host/pnacl_host.h

Issue 75463005: Move more files from chrome/browser/nacl_host/ to components/nacl/browser/ (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 7 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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_

Powered by Google App Engine
This is Rietveld 408576698