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

Side by Side Diff: components/nacl/browser/nacl_host_impl.h

Issue 2514323004: Convert NaCl renderer-browser messages to mojo. (Closed)
Patch Set: rebase Created 3 years, 11 months 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 unified diff | Download patch
OLDNEW
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
25 namespace net {
26 class HostResolver;
27 class URLRequestContextGetter;
28 }
29
30 namespace nacl { 26 namespace nacl {
31 27
32 // This class filters out incoming Chrome-specific IPC messages for the renderer 28 // This class implements the NaClHost mojo interface on the IO thread.
33 // process on the IPC thread. 29 class NaClHostImpl : public mojom::NaClHost,
34 class NaClHostMessageFilter : public content::BrowserMessageFilter { 30 public base::RefCountedThreadSafe<NaClHostImpl> {
35 public: 31 public:
36 NaClHostMessageFilter(int render_process_id, 32 NaClHostImpl(int render_process_id,
37 bool is_off_the_record, 33 bool is_off_the_record,
38 const base::FilePath& profile_directory, 34 const base::FilePath& profile_directory,
39 net::URLRequestContextGetter* request_context); 35 mojom::NaClHostRequest request);
40 36
41 // content::BrowserMessageFilter methods: 37 static void Create(int render_process_id,
42 bool OnMessageReceived(const IPC::Message& message) override; 38 bool is_off_the_record,
43 void OnChannelClosing() override; 39 const base::FilePath& profile_directory,
44 40 mojom::NaClHostRequest request);
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 41
50 private: 42 private:
51 friend class content::BrowserThread; 43 friend class base::RefCountedThreadSafe<NaClHostImpl>;
52 friend class base::DeleteHelper<NaClHostMessageFilter>;
53 44
54 ~NaClHostMessageFilter() override; 45 ~NaClHostImpl() override;
55 46
56 void OnLaunchNaCl(const NaClLaunchParams& launch_params, 47 void OnConnectionError();
57 IPC::Message* reply_msg); 48
58 void BatchOpenResourceFiles(const nacl::NaClLaunchParams& launch_params, 49 void LaunchNaCl(mojom::NaClLaunchParamsPtr launch_params,
59 IPC::Message* reply_msg, 50 const LaunchNaClCallback& callback) override;
51 void BatchOpenResourceFiles(mojom::NaClLaunchParamsPtr launch_params,
52 const LaunchNaClCallback& callback,
60 ppapi::PpapiPermissions permissions); 53 ppapi::PpapiPermissions permissions);
61 void LaunchNaClContinuation( 54 void LaunchNaClContinuation(mojom::NaClLaunchParamsPtr launch_params,
62 const nacl::NaClLaunchParams& launch_params, 55 const LaunchNaClCallback& callback);
63 IPC::Message* reply_msg);
64 void LaunchNaClContinuationOnIOThread( 56 void LaunchNaClContinuationOnIOThread(
65 const nacl::NaClLaunchParams& launch_params, 57 mojom::NaClLaunchParamsPtr launch_params,
66 IPC::Message* reply_msg, 58 const LaunchNaClCallback& callback,
67 const std::vector<NaClResourcePrefetchResult>& prefetched_resource_files, 59 const std::vector<NaClResourcePrefetchResult>& prefetched_resource_files,
68 ppapi::PpapiPermissions permissions); 60 ppapi::PpapiPermissions permissions);
69 void OnGetReadonlyPnaclFd(const std::string& filename, 61 void GetReadonlyPnaclFd(const std::string& filename,
70 bool is_executable, 62 bool is_executable,
71 IPC::Message* reply_msg); 63 const GetReadonlyPnaclFdCallback& callback) override;
72 void OnNaClCreateTemporaryFile(IPC::Message* reply_msg); 64 void NaClCreateTemporaryFile(
73 void OnNaClGetNumProcessors(int* num_processors); 65 const NaClCreateTemporaryFileCallback& callback) override;
74 void OnGetNexeFd(int render_view_id, 66 void NaClGetNumProcessors(
75 int pp_instance, 67 const NaClGetNumProcessorsCallback& callback) override;
76 const PnaclCacheInfo& cache_info); 68 void NexeTempFileRequest(
77 void OnTranslationFinished(int instance, bool success); 69 int render_view_id,
78 void OnMissingArchError(int render_view_id); 70 int pp_instance,
79 void OnOpenNaClExecutable(int render_view_id, 71 const PnaclCacheInfo& cache_info,
80 const GURL& file_url, 72 const NexeTempFileRequestCallback& callback) override;
81 bool enable_validation_caching, 73 void ReportTranslationFinished(int instance, bool success) override;
82 IPC::Message* reply_msg); 74 void MissingArchError(int render_view_id) override;
83 void SyncReturnTemporaryFile(IPC::Message* reply_msg, 75 void OpenNaClExecutable(int render_view_id,
84 base::File file); 76 const GURL& file_url,
85 void AsyncReturnTemporaryFile(int pp_instance, 77 bool enable_validation_caching,
86 const base::File& file, 78 const OpenNaClExecutableCallback& callback) override;
87 bool is_hit); 79 void NaClDebugEnabledForURL(
88 void OnNaClDebugEnabledForURL(const GURL& nmf_url, bool* should_debug); 80 const GURL& nmf_url,
81 const NaClDebugEnabledForURLCallback& callback) override;
89 82
90 int render_process_id_; 83 const int render_process_id_;
91 84
92 // off_the_record_ is copied from the profile partly so that it can be 85 // off_the_record_ is copied from the profile partly so that it can be
93 // read on the IO thread. 86 // read on the IO thread.
94 bool off_the_record_; 87 const bool off_the_record_;
95 base::FilePath profile_directory_; 88 base::FilePath profile_directory_;
96 scoped_refptr<net::URLRequestContextGetter> request_context_; 89 scoped_refptr<NaClHostImpl> self_;
90 mojo::Binding<mojom::NaClHost> binding_;
97 91
98 base::WeakPtrFactory<NaClHostMessageFilter> weak_ptr_factory_; 92 base::WeakPtrFactory<NaClHostImpl> weak_ptr_factory_;
99 93
100 DISALLOW_COPY_AND_ASSIGN(NaClHostMessageFilter); 94 DISALLOW_COPY_AND_ASSIGN(NaClHostImpl);
101 }; 95 };
102 96
103 } // namespace nacl 97 } // namespace nacl
104 98
105 #endif // COMPONENTS_NACL_BROWSER_NACL_HOST_MESSAGE_FILTER_H_ 99 #endif // COMPONENTS_NACL_BROWSER_NACL_HOST_IMPL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698