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

Side by Side Diff: chrome/common/chrome_content_client.cc

Issue 7863024: Make the NaCl windows 64 bit binaries not depend on chrome targets. (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: simplify chrome_exe.gypi Created 9 years, 3 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 | Annotate | Revision Log
« no previous file with comments | « chrome/chrome_exe.gypi ('k') | chrome/common/chrome_content_plugin_client.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 #include "chrome/common/chrome_content_client.h" 5 #include "chrome/common/chrome_content_client.h"
6 6
7 #include "base/command_line.h" 7 #include "base/command_line.h"
8 #include "base/file_util.h" 8 #include "base/file_util.h"
9 #include "base/path_service.h" 9 #include "base/path_service.h"
10 #include "base/process_util.h" 10 #include "base/process_util.h"
11 #include "base/string_number_conversions.h" 11 #include "base/string_number_conversions.h"
12 #include "base/stringprintf.h" 12 #include "base/stringprintf.h"
13 #include "base/string_split.h" 13 #include "base/string_split.h"
14 #include "base/string_util.h" 14 #include "base/string_util.h"
15 #include "base/win/windows_version.h" 15 #include "base/win/windows_version.h"
16 #include "chrome/common/child_process_logging.h" 16 #include "chrome/common/child_process_logging.h"
17 #include "chrome/common/chrome_paths.h" 17 #include "chrome/common/chrome_paths.h"
18 #include "chrome/common/chrome_switches.h" 18 #include "chrome/common/chrome_switches.h"
19 #include "chrome/common/chrome_version_info.h" 19 #include "chrome/common/chrome_version_info.h"
20 #include "chrome/common/render_messages.h"
20 #include "content/common/pepper_plugin_registry.h" 21 #include "content/common/pepper_plugin_registry.h"
21 #include "remoting/client/plugin/pepper_entrypoints.h" 22 #include "remoting/client/plugin/pepper_entrypoints.h"
22 #include "ui/base/l10n/l10n_util.h" 23 #include "ui/base/l10n/l10n_util.h"
23 #include "ui/base/resource/resource_bundle.h" 24 #include "ui/base/resource/resource_bundle.h"
24 #include "webkit/glue/user_agent.h" 25 #include "webkit/glue/user_agent.h"
25 #include "webkit/plugins/plugin_constants.h" 26 #include "webkit/plugins/plugin_constants.h"
26 27
27 #if defined(OS_WIN) 28 #if defined(OS_WIN)
28 #include "content/common/sandbox_policy.h" 29 #include "content/common/sandbox_policy.h"
29 #include "sandbox/src/sandbox.h" 30 #include "sandbox/src/sandbox.h"
30 #endif 31 #endif
31 32
32 #if !defined(NACL_WIN64) // The code this needs isn't linked on Win64 builds.
33 #include "chrome/common/render_messages.h"
34 #endif
35
36 namespace { 33 namespace {
37 34
38 const char kPDFPluginName[] = "Chrome PDF Viewer"; 35 const char kPDFPluginName[] = "Chrome PDF Viewer";
39 const char kPDFPluginMimeType[] = "application/pdf"; 36 const char kPDFPluginMimeType[] = "application/pdf";
40 const char kPDFPluginExtension[] = "pdf"; 37 const char kPDFPluginExtension[] = "pdf";
41 const char kPDFPluginDescription[] = "Portable Document Format"; 38 const char kPDFPluginDescription[] = "Portable Document Format";
42 const char kPDFPluginPrintPreviewMimeType 39 const char kPDFPluginPrintPreviewMimeType
43 [] = "application/x-google-chrome-print-preview-pdf"; 40 [] = "application/x-google-chrome-print-preview-pdf";
44 41
45 const char kNaClPluginName[] = "Native Client"; 42 const char kNaClPluginName[] = "Native Client";
46 const char kNaClPluginMimeType[] = "application/x-nacl"; 43 const char kNaClPluginMimeType[] = "application/x-nacl";
47 const char kNaClPluginExtension[] = "nexe"; 44 const char kNaClPluginExtension[] = "nexe";
48 const char kNaClPluginDescription[] = "Native Client Executable"; 45 const char kNaClPluginDescription[] = "Native Client Executable";
49 46
50 const char kNaClOldPluginName[] = "Chrome NaCl"; 47 const char kNaClOldPluginName[] = "Chrome NaCl";
51 48
52 #if defined(ENABLE_REMOTING) 49 #if defined(ENABLE_REMOTING)
53 const char kRemotingViewerPluginName[] = "Remoting Viewer"; 50 const char kRemotingViewerPluginName[] = "Remoting Viewer";
54 const FilePath::CharType kRemotingViewerPluginPath[] = 51 const FilePath::CharType kRemotingViewerPluginPath[] =
55 FILE_PATH_LITERAL("internal-remoting-viewer"); 52 FILE_PATH_LITERAL("internal-remoting-viewer");
56 // Use a consistent MIME-type regardless of branding. 53 // Use a consistent MIME-type regardless of branding.
57 const char kRemotingViewerPluginMimeType[] = 54 const char kRemotingViewerPluginMimeType[] =
58 "application/vnd.chromium.remoting-viewer"; 55 "application/vnd.chromium.remoting-viewer";
59 // TODO(wez): Remove the old MIME-type once client code no longer needs it. 56 // TODO(wez): Remove the old MIME-type once client code no longer needs it.
60 const char kRemotingViewerPluginOldMimeType[] = 57 const char kRemotingViewerPluginOldMimeType[] =
61 "pepper-application/x-chromoting"; 58 "pepper-application/x-chromoting";
62 #endif 59 #endif
63 60
64 #if !defined(NACL_WIN64) // The code this needs isn't linked on Win64 builds.
65 // Appends the known built-in plugins to the given vector. Some built-in 61 // Appends the known built-in plugins to the given vector. Some built-in
66 // plugins are "internal" which means they are compiled into the Chrome binary, 62 // plugins are "internal" which means they are compiled into the Chrome binary,
67 // and some are extra shared libraries distributed with the browser (these are 63 // and some are extra shared libraries distributed with the browser (these are
68 // not marked internal, aside from being automatically registered, they're just 64 // not marked internal, aside from being automatically registered, they're just
69 // regular plugins). 65 // regular plugins).
70 void ComputeBuiltInPlugins(std::vector<PepperPluginInfo>* plugins) { 66 void ComputeBuiltInPlugins(std::vector<PepperPluginInfo>* plugins) {
71 // PDF. 67 // PDF.
72 // 68 //
73 // Once we're sandboxed, we can't know if the PDF plugin is available or not; 69 // Once we're sandboxed, we can't know if the PDF plugin is available or not;
74 // but (on Linux) this function is always called once before we're sandboxed. 70 // but (on Linux) this function is always called once before we're sandboxed.
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
183 kFlashPluginSwfExtension, 179 kFlashPluginSwfExtension,
184 kFlashPluginSwfDescription); 180 kFlashPluginSwfDescription);
185 plugin.mime_types.push_back(swf_mime_type); 181 plugin.mime_types.push_back(swf_mime_type);
186 webkit::WebPluginMimeType spl_mime_type(kFlashPluginSplMimeType, 182 webkit::WebPluginMimeType spl_mime_type(kFlashPluginSplMimeType,
187 kFlashPluginSplExtension, 183 kFlashPluginSplExtension,
188 kFlashPluginSplDescription); 184 kFlashPluginSplDescription);
189 plugin.mime_types.push_back(spl_mime_type); 185 plugin.mime_types.push_back(spl_mime_type);
190 plugins->push_back(plugin); 186 plugins->push_back(plugin);
191 } 187 }
192 188
193 #endif // !defined(NACL_WIN64)
194
195 #if defined(OS_WIN) 189 #if defined(OS_WIN)
196 // Launches the privileged flash broker, used when flash is sandboxed. 190 // Launches the privileged flash broker, used when flash is sandboxed.
197 // The broker is the same flash dll, except that it uses a different 191 // The broker is the same flash dll, except that it uses a different
198 // entrypoint (BrokerMain) and it is hosted in windows' generic surrogate 192 // entrypoint (BrokerMain) and it is hosted in windows' generic surrogate
199 // process rundll32. After launching the broker we need to pass to 193 // process rundll32. After launching the broker we need to pass to
200 // the flash plugin the process id of the broker via the command line 194 // the flash plugin the process id of the broker via the command line
201 // using --flash-broker=pid. 195 // using --flash-broker=pid.
202 // More info about rundll32 at http://support.microsoft.com/kb/164787. 196 // More info about rundll32 at http://support.microsoft.com/kb/164787.
203 bool LoadFlashBroker(const FilePath& plugin_path, CommandLine* cmd_line) { 197 bool LoadFlashBroker(const FilePath& plugin_path, CommandLine* cmd_line) {
204 FilePath rundll; 198 FilePath rundll;
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
269 void ChromeContentClient::SetActiveURL(const GURL& url) { 263 void ChromeContentClient::SetActiveURL(const GURL& url) {
270 child_process_logging::SetActiveURL(url); 264 child_process_logging::SetActiveURL(url);
271 } 265 }
272 266
273 void ChromeContentClient::SetGpuInfo(const GPUInfo& gpu_info) { 267 void ChromeContentClient::SetGpuInfo(const GPUInfo& gpu_info) {
274 child_process_logging::SetGpuInfo(gpu_info); 268 child_process_logging::SetGpuInfo(gpu_info);
275 } 269 }
276 270
277 void ChromeContentClient::AddPepperPlugins( 271 void ChromeContentClient::AddPepperPlugins(
278 std::vector<PepperPluginInfo>* plugins) { 272 std::vector<PepperPluginInfo>* plugins) {
279 #if !defined(NACL_WIN64) // The code this needs isn't linked on Win64 builds.
280 ComputeBuiltInPlugins(plugins); 273 ComputeBuiltInPlugins(plugins);
281 AddOutOfProcessFlash(plugins); 274 AddOutOfProcessFlash(plugins);
282 #endif
283 } 275 }
284 276
285 bool ChromeContentClient::CanSendWhileSwappedOut(const IPC::Message* msg) { 277 bool ChromeContentClient::CanSendWhileSwappedOut(const IPC::Message* msg) {
286 #if !defined(NACL_WIN64) // The code this needs isn't linked on Win64 builds.
287 // Any Chrome-specific messages that must be allowed to be sent from swapped 278 // Any Chrome-specific messages that must be allowed to be sent from swapped
288 // out renderers. 279 // out renderers.
289 switch (msg->type()) { 280 switch (msg->type()) {
290 case ChromeViewHostMsg_DomOperationResponse::ID: 281 case ChromeViewHostMsg_DomOperationResponse::ID:
291 return true; 282 return true;
292 default: 283 default:
293 break; 284 break;
294 } 285 }
295 #endif
296 return false; 286 return false;
297 } 287 }
298 288
299 bool ChromeContentClient::CanHandleWhileSwappedOut( 289 bool ChromeContentClient::CanHandleWhileSwappedOut(
300 const IPC::Message& msg) { 290 const IPC::Message& msg) {
301 #if !defined(NACL_WIN64) // The code this needs isn't linked on Win64 builds.
302 // Any Chrome-specific messages (apart from those listed in 291 // Any Chrome-specific messages (apart from those listed in
303 // CanSendWhileSwappedOut) that must be handled by the browser when sent from 292 // CanSendWhileSwappedOut) that must be handled by the browser when sent from
304 // swapped out renderers. 293 // swapped out renderers.
305 switch (msg.type()) { 294 switch (msg.type()) {
306 case ChromeViewHostMsg_Snapshot::ID: 295 case ChromeViewHostMsg_Snapshot::ID:
307 return true; 296 return true;
308 default: 297 default:
309 break; 298 break;
310 } 299 }
311 #endif
312 return false; 300 return false;
313 } 301 }
314 302
315 std::string ChromeContentClient::GetUserAgent(bool mimic_windows) const { 303 std::string ChromeContentClient::GetUserAgent(bool mimic_windows) const {
316 chrome::VersionInfo version_info; 304 chrome::VersionInfo version_info;
317 std::string product("Chrome/"); 305 std::string product("Chrome/");
318 product += version_info.is_valid() ? version_info.Version() : "0.0.0.0"; 306 product += version_info.is_valid() ? version_info.Version() : "0.0.0.0";
319 307
320 return webkit_glue::BuildUserAgentHelper(mimic_windows, product); 308 return webkit_glue::BuildUserAgentHelper(mimic_windows, product);
321 } 309 }
322 310
323 string16 ChromeContentClient::GetLocalizedString(int message_id) const { 311 string16 ChromeContentClient::GetLocalizedString(int message_id) const {
324 #if defined(NACL_WIN64) // The code this needs isn't linked on Win64 builds.
325 return string16();
326 #else
327 return l10n_util::GetStringUTF16(message_id); 312 return l10n_util::GetStringUTF16(message_id);
328 #endif
329 } 313 }
330 314
331 base::StringPiece ChromeContentClient::GetDataResource(int resource_id) const { 315 base::StringPiece ChromeContentClient::GetDataResource(int resource_id) const {
332 #if defined(NACL_WIN64) // The code this needs isn't linked on Win64 builds.
333 return base::StringPiece();
334 #else
335 return ResourceBundle::GetSharedInstance().GetRawDataResource(resource_id); 316 return ResourceBundle::GetSharedInstance().GetRawDataResource(resource_id);
336 #endif
337 } 317 }
338 318
339 #if defined(OS_WIN) 319 #if defined(OS_WIN)
340 bool ChromeContentClient::SandboxPlugin(CommandLine* command_line, 320 bool ChromeContentClient::SandboxPlugin(CommandLine* command_line,
341 sandbox::TargetPolicy* policy) { 321 sandbox::TargetPolicy* policy) {
342 std::wstring plugin_dll = command_line-> 322 std::wstring plugin_dll = command_line->
343 GetSwitchValueNative(switches::kPluginPath); 323 GetSwitchValueNative(switches::kPluginPath);
344 324
345 FilePath builtin_flash; 325 FilePath builtin_flash;
346 if (!PathService::Get(chrome::FILE_FLASH_PLUGIN, &builtin_flash)) 326 if (!PathService::Get(chrome::FILE_FLASH_PLUGIN, &builtin_flash))
(...skipping 43 matching lines...) Expand 10 before | Expand all | Expand 10 after
390 policy->SetJobLevel(sandbox::JOB_UNPROTECTED, 0); 370 policy->SetJobLevel(sandbox::JOB_UNPROTECTED, 0);
391 policy->SetTokenLevel( 371 policy->SetTokenLevel(
392 sandbox::USER_UNPROTECTED, sandbox::USER_UNPROTECTED); 372 sandbox::USER_UNPROTECTED, sandbox::USER_UNPROTECTED);
393 } 373 }
394 374
395 return true; 375 return true;
396 } 376 }
397 #endif 377 #endif
398 378
399 } // namespace chrome 379 } // namespace chrome
OLDNEW
« no previous file with comments | « chrome/chrome_exe.gypi ('k') | chrome/common/chrome_content_plugin_client.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698