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

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

Issue 10281007: Fix the issue that Pepper Flash cannot load on Linux. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: i. Created 8 years, 7 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
« no previous file with comments | « chrome/common/chrome_content_client.h ('k') | chrome/common/pepper_flash.h » ('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) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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"
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after
245 // Also get the version from the command-line. Should be something like 11.2 245 // Also get the version from the command-line. Should be something like 11.2
246 // or 11.2.123.45. 246 // or 11.2.123.45.
247 std::string flash_version = 247 std::string flash_version =
248 CommandLine::ForCurrentProcess()->GetSwitchValueASCII( 248 CommandLine::ForCurrentProcess()->GetSwitchValueASCII(
249 switches::kPpapiFlashVersion); 249 switches::kPpapiFlashVersion);
250 250
251 plugins->push_back( 251 plugins->push_back(
252 CreatePepperFlashInfo(FilePath(flash_path), flash_version)); 252 CreatePepperFlashInfo(FilePath(flash_path), flash_version));
253 } 253 }
254 254
255 bool GetBundledPepperFlash(content::PepperPluginInfo* plugin,
256 bool* override_npapi_flash) {
257 #if defined(FLAPPER_AVAILABLE)
258 // Ignore bundled Pepper Flash if there is Pepper Flash specified from the
259 // command-line.
260 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kPpapiFlashPath))
261 return false;
262
263 bool force_disable = CommandLine::ForCurrentProcess()->HasSwitch(
264 switches::kDisableBundledPpapiFlash);
265 if (force_disable)
266 return false;
267
268 FilePath flash_path;
269 if (!PathService::Get(chrome::FILE_PEPPER_FLASH_PLUGIN, &flash_path))
270 return false;
271 // It is an error to have FLAPPER_AVAILABLE defined but then not having the
272 // plugin file in place, but this happens in Chrome OS builds.
273 // Use --disable-bundled-ppapi-flash to skip this.
274 DCHECK(file_util::PathExists(flash_path));
275
276 bool force_enable = CommandLine::ForCurrentProcess()->HasSwitch(
277 switches::kEnableBundledPpapiFlash);
278
279 *plugin = CreatePepperFlashInfo(flash_path, FLAPPER_VERSION_STRING);
280 *override_npapi_flash = force_enable || IsPepperFlashEnabledByDefault();
281 return true;
282 #else
283 return false;
284 #endif // FLAPPER_AVAILABLE
285 }
286
255 #if defined(OS_WIN) 287 #if defined(OS_WIN)
256 // Launches the privileged flash broker, used when flash is sandboxed. 288 // Launches the privileged flash broker, used when flash is sandboxed.
257 // The broker is the same flash dll, except that it uses a different 289 // The broker is the same flash dll, except that it uses a different
258 // entrypoint (BrokerMain) and it is hosted in windows' generic surrogate 290 // entrypoint (BrokerMain) and it is hosted in windows' generic surrogate
259 // process rundll32. After launching the broker we need to pass to 291 // process rundll32. After launching the broker we need to pass to
260 // the flash plugin the process id of the broker via the command line 292 // the flash plugin the process id of the broker via the command line
261 // using --flash-broker=pid. 293 // using --flash-broker=pid.
262 // More info about rundll32 at http://support.microsoft.com/kb/164787. 294 // More info about rundll32 at http://support.microsoft.com/kb/164787.
263 bool LoadFlashBroker(const FilePath& plugin_path, CommandLine* cmd_line) { 295 bool LoadFlashBroker(const FilePath& plugin_path, CommandLine* cmd_line) {
264 FilePath rundll; 296 FilePath rundll;
(...skipping 55 matching lines...) Expand 10 before | Expand all | Expand 10 after
320 } 352 }
321 353
322 void ChromeContentClient::SetGpuInfo(const content::GPUInfo& gpu_info) { 354 void ChromeContentClient::SetGpuInfo(const content::GPUInfo& gpu_info) {
323 child_process_logging::SetGpuInfo(gpu_info); 355 child_process_logging::SetGpuInfo(gpu_info);
324 } 356 }
325 357
326 void ChromeContentClient::AddPepperPlugins( 358 void ChromeContentClient::AddPepperPlugins(
327 std::vector<content::PepperPluginInfo>* plugins) { 359 std::vector<content::PepperPluginInfo>* plugins) {
328 ComputeBuiltInPlugins(plugins); 360 ComputeBuiltInPlugins(plugins);
329 AddPepperFlashFromCommandLine(plugins); 361 AddPepperFlashFromCommandLine(plugins);
362
363 // Don't try to register Pepper Flash if there exists a Pepper Flash field
364 // trial. It will be registered separately.
365 if (!ConductingPepperFlashFieldTrial() && IsPepperFlashEnabledByDefault()) {
366 content::PepperPluginInfo plugin;
367 bool add_at_beginning = false;
368 if (GetBundledPepperFlash(&plugin, &add_at_beginning))
369 plugins->push_back(plugin);
370 }
330 } 371 }
331 372
332 void ChromeContentClient::AddNPAPIPlugins( 373 void ChromeContentClient::AddNPAPIPlugins(
333 webkit::npapi::PluginList* plugin_list) { 374 webkit::npapi::PluginList* plugin_list) {
334 } 375 }
335 376
336 void ChromeContentClient::AddAdditionalSchemes( 377 void ChromeContentClient::AddAdditionalSchemes(
337 std::vector<std::string>* standard_schemes, 378 std::vector<std::string>* standard_schemes,
338 std::vector<std::string>* savable_schemes) { 379 std::vector<std::string>* savable_schemes) {
339 standard_schemes->push_back(kExtensionScheme); 380 standard_schemes->push_back(kExtensionScheme);
(...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after
449 int* sandbox_profile_resource_id) const { 490 int* sandbox_profile_resource_id) const {
450 DCHECK(sandbox_profile_resource_id); 491 DCHECK(sandbox_profile_resource_id);
451 if (sandbox_type == CHROME_SANDBOX_TYPE_NACL_LOADER) { 492 if (sandbox_type == CHROME_SANDBOX_TYPE_NACL_LOADER) {
452 *sandbox_profile_resource_id = IDR_NACL_SANDBOX_PROFILE; 493 *sandbox_profile_resource_id = IDR_NACL_SANDBOX_PROFILE;
453 return true; 494 return true;
454 } 495 }
455 return false; 496 return false;
456 } 497 }
457 #endif 498 #endif
458 499
459 bool ChromeContentClient::GetBundledPepperFlash( 500 bool ChromeContentClient::GetBundledFieldTrialPepperFlash(
460 content::PepperPluginInfo* plugin, 501 content::PepperPluginInfo* plugin,
461 bool* override_npapi_flash) { 502 bool* override_npapi_flash) {
462 #if defined(FLAPPER_AVAILABLE) 503 if (!ConductingPepperFlashFieldTrial())
463 // Ignore bundled Pepper Flash if there is Pepper Flash specified from the
464 // command-line.
465 if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kPpapiFlashPath))
466 return false; 504 return false;
467 505 return GetBundledPepperFlash(plugin, override_npapi_flash);
468 bool force_disable = CommandLine::ForCurrentProcess()->HasSwitch(
469 switches::kDisableBundledPpapiFlash);
470 if (force_disable)
471 return false;
472
473 FilePath flash_path;
474 if (!PathService::Get(chrome::FILE_PEPPER_FLASH_PLUGIN, &flash_path))
475 return false;
476 // It is an error to have FLAPPER_AVAILABLE defined but then not having the
477 // plugin file in place, but this happens in Chrome OS builds.
478 // Use --disable-bundled-ppapi-flash to skip this.
479 DCHECK(file_util::PathExists(flash_path));
480
481 bool force_enable = CommandLine::ForCurrentProcess()->HasSwitch(
482 switches::kEnableBundledPpapiFlash);
483
484 *plugin = CreatePepperFlashInfo(flash_path, FLAPPER_VERSION_STRING);
485 *override_npapi_flash = force_enable || IsPepperFlashEnabledByDefault();
486 return true;
487 #else
488 return false;
489 #endif // FLAPPER_AVAILABLE
490 } 506 }
491 507
492 } // namespace chrome 508 } // namespace chrome
OLDNEW
« no previous file with comments | « chrome/common/chrome_content_client.h ('k') | chrome/common/pepper_flash.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698