| OLD | NEW |
| 1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #ifndef COMPONENTS_NACL_BROWSER_NACL_HOST_MESSAGE_FILTER_H_ | 5 #ifndef COMPONENTS_NACL_BROWSER_NACL_HOST_IMPL_H_ |
| 6 #define COMPONENTS_NACL_BROWSER_NACL_HOST_MESSAGE_FILTER_H_ | 6 #define COMPONENTS_NACL_BROWSER_NACL_HOST_IMPL_H_ |
| 7 | 7 |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/files/file.h" | 10 #include "base/files/file.h" |
| 11 #include "base/files/file_path.h" | 11 #include "base/files/file_path.h" |
| 12 #include "base/macros.h" | 12 #include "base/macros.h" |
| 13 #include "base/memory/weak_ptr.h" | 13 #include "base/memory/weak_ptr.h" |
| 14 #include "components/nacl/common/nacl.mojom.h" |
| 14 #include "content/public/browser/browser_message_filter.h" | 15 #include "content/public/browser/browser_message_filter.h" |
| 16 #include "mojo/public/cpp/bindings/binding.h" |
| 15 #include "ppapi/shared_impl/ppapi_permissions.h" | 17 #include "ppapi/shared_impl/ppapi_permissions.h" |
| 16 | 18 |
| 17 class GURL; | 19 class GURL; |
| 18 | 20 |
| 19 namespace nacl { | 21 namespace nacl { |
| 20 struct NaClLaunchParams; | |
| 21 struct NaClResourcePrefetchResult; | 22 struct NaClResourcePrefetchResult; |
| 22 struct PnaclCacheInfo; | 23 struct PnaclCacheInfo; |
| 23 } | |
| 24 | 24 |
| 25 namespace net { | 25 // This class implements the NaClHost mojo interface on the IO thread. |
| 26 class HostResolver; | 26 class NaClHostImpl : public mojom::NaClHost, |
| 27 class URLRequestContextGetter; | 27 public base::RefCountedThreadSafe<NaClHostImpl> { |
| 28 } | 28 public: |
| 29 NaClHostImpl(int render_process_id, |
| 30 bool is_off_the_record, |
| 31 const base::FilePath& profile_directory, |
| 32 mojom::NaClHostRequest request); |
| 29 | 33 |
| 30 namespace nacl { | 34 static void Create(int render_process_id, |
| 31 | 35 bool is_off_the_record, |
| 32 // This class filters out incoming Chrome-specific IPC messages for the renderer | 36 const base::FilePath& profile_directory, |
| 33 // process on the IPC thread. | 37 mojom::NaClHostRequest request); |
| 34 class NaClHostMessageFilter : public content::BrowserMessageFilter { | |
| 35 public: | |
| 36 NaClHostMessageFilter(int render_process_id, | |
| 37 bool is_off_the_record, | |
| 38 const base::FilePath& profile_directory, | |
| 39 net::URLRequestContextGetter* request_context); | |
| 40 | |
| 41 // content::BrowserMessageFilter methods: | |
| 42 bool OnMessageReceived(const IPC::Message& message) override; | |
| 43 void OnChannelClosing() override; | |
| 44 | |
| 45 int render_process_id() { return render_process_id_; } | |
| 46 bool off_the_record() { return off_the_record_; } | |
| 47 const base::FilePath& profile_directory() const { return profile_directory_; } | |
| 48 net::HostResolver* GetHostResolver(); | |
| 49 | 38 |
| 50 private: | 39 private: |
| 51 friend class content::BrowserThread; | 40 friend class base::RefCountedThreadSafe<NaClHostImpl>; |
| 52 friend class base::DeleteHelper<NaClHostMessageFilter>; | |
| 53 | 41 |
| 54 ~NaClHostMessageFilter() override; | 42 ~NaClHostImpl() override; |
| 55 | 43 |
| 56 void OnLaunchNaCl(const NaClLaunchParams& launch_params, | 44 void OnConnectionError(); |
| 57 IPC::Message* reply_msg); | 45 |
| 58 void BatchOpenResourceFiles(const nacl::NaClLaunchParams& launch_params, | 46 void LaunchNaCl(mojom::NaClLaunchParamsPtr launch_params, |
| 59 IPC::Message* reply_msg, | 47 const LaunchNaClCallback& callback) override; |
| 48 void BatchOpenResourceFiles(mojom::NaClLaunchParamsPtr launch_params, |
| 49 const LaunchNaClCallback& callback, |
| 60 ppapi::PpapiPermissions permissions); | 50 ppapi::PpapiPermissions permissions); |
| 61 void LaunchNaClContinuation( | 51 void LaunchNaClContinuation(mojom::NaClLaunchParamsPtr launch_params, |
| 62 const nacl::NaClLaunchParams& launch_params, | 52 const LaunchNaClCallback& callback); |
| 63 IPC::Message* reply_msg); | |
| 64 void LaunchNaClContinuationOnIOThread( | 53 void LaunchNaClContinuationOnIOThread( |
| 65 const nacl::NaClLaunchParams& launch_params, | 54 mojom::NaClLaunchParamsPtr launch_params, |
| 66 IPC::Message* reply_msg, | 55 const LaunchNaClCallback& callback, |
| 67 const std::vector<NaClResourcePrefetchResult>& prefetched_resource_files, | 56 const std::vector<NaClResourcePrefetchResult>& prefetched_resource_files, |
| 68 ppapi::PpapiPermissions permissions); | 57 ppapi::PpapiPermissions permissions); |
| 69 void OnGetReadonlyPnaclFd(const std::string& filename, | 58 void GetReadonlyPnaclFd(const std::string& filename, |
| 70 bool is_executable, | 59 bool is_executable, |
| 71 IPC::Message* reply_msg); | 60 const GetReadonlyPnaclFdCallback& callback) override; |
| 72 void OnNaClCreateTemporaryFile(IPC::Message* reply_msg); | 61 void NaClCreateTemporaryFile( |
| 73 void OnNaClGetNumProcessors(int* num_processors); | 62 const NaClCreateTemporaryFileCallback& callback) override; |
| 74 void OnGetNexeFd(int render_view_id, | 63 void NaClGetNumProcessors( |
| 75 int pp_instance, | 64 const NaClGetNumProcessorsCallback& callback) override; |
| 76 const PnaclCacheInfo& cache_info); | 65 void NexeTempFileRequest( |
| 77 void OnTranslationFinished(int instance, bool success); | 66 int render_view_id, |
| 78 void OnMissingArchError(int render_view_id); | 67 int pp_instance, |
| 79 void OnOpenNaClExecutable(int render_view_id, | 68 const PnaclCacheInfo& cache_info, |
| 80 const GURL& file_url, | 69 const NexeTempFileRequestCallback& callback) override; |
| 81 bool enable_validation_caching, | 70 void ReportTranslationFinished(int instance, bool success) override; |
| 82 IPC::Message* reply_msg); | 71 void MissingArchError(int render_view_id) override; |
| 83 void SyncReturnTemporaryFile(IPC::Message* reply_msg, | 72 void OpenNaClExecutable(int render_view_id, |
| 84 base::File file); | 73 const GURL& file_url, |
| 85 void AsyncReturnTemporaryFile(int pp_instance, | 74 bool enable_validation_caching, |
| 86 const base::File& file, | 75 const OpenNaClExecutableCallback& callback) override; |
| 87 bool is_hit); | 76 void NaClDebugEnabledForURL( |
| 88 void OnNaClDebugEnabledForURL(const GURL& nmf_url, bool* should_debug); | 77 const GURL& nmf_url, |
| 78 const NaClDebugEnabledForURLCallback& callback) override; |
| 89 | 79 |
| 90 int render_process_id_; | 80 const int render_process_id_; |
| 91 | 81 |
| 92 // off_the_record_ is copied from the profile partly so that it can be | 82 // off_the_record_ is copied from the profile partly so that it can be |
| 93 // read on the IO thread. | 83 // read on the IO thread. |
| 94 bool off_the_record_; | 84 const bool off_the_record_; |
| 95 base::FilePath profile_directory_; | 85 base::FilePath profile_directory_; |
| 96 scoped_refptr<net::URLRequestContextGetter> request_context_; | 86 scoped_refptr<NaClHostImpl> self_; |
| 87 mojo::Binding<mojom::NaClHost> binding_; |
| 97 | 88 |
| 98 base::WeakPtrFactory<NaClHostMessageFilter> weak_ptr_factory_; | 89 base::WeakPtrFactory<NaClHostImpl> weak_ptr_factory_; |
| 99 | 90 |
| 100 DISALLOW_COPY_AND_ASSIGN(NaClHostMessageFilter); | 91 DISALLOW_COPY_AND_ASSIGN(NaClHostImpl); |
| 101 }; | 92 }; |
| 102 | 93 |
| 103 } // namespace nacl | 94 } // namespace nacl |
| 104 | 95 |
| 105 #endif // COMPONENTS_NACL_BROWSER_NACL_HOST_MESSAGE_FILTER_H_ | 96 #endif // COMPONENTS_NACL_BROWSER_NACL_HOST_IMPL_H_ |
| OLD | NEW |