OLD | NEW |
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 "content/ppapi_plugin/ppapi_thread.h" | 5 #include "content/ppapi_plugin/ppapi_thread.h" |
6 | 6 |
7 #include <limits> | 7 #include <limits> |
8 | 8 |
9 #include "base/command_line.h" | 9 #include "base/command_line.h" |
| 10 #include "base/cpu.h" |
10 #include "base/debug/crash_logging.h" | 11 #include "base/debug/crash_logging.h" |
11 #include "base/logging.h" | 12 #include "base/logging.h" |
12 #include "base/metrics/histogram.h" | 13 #include "base/metrics/histogram.h" |
13 #include "base/rand_util.h" | 14 #include "base/rand_util.h" |
14 #include "base/strings/stringprintf.h" | 15 #include "base/strings/stringprintf.h" |
15 #include "base/strings/utf_string_conversions.h" | 16 #include "base/strings/utf_string_conversions.h" |
16 #include "base/threading/platform_thread.h" | 17 #include "base/threading/platform_thread.h" |
17 #include "base/time/time.h" | 18 #include "base/time/time.h" |
18 #include "content/child/browser_font_resource_trusted.h" | 19 #include "content/child/browser_font_resource_trusted.h" |
19 #include "content/child/child_process.h" | 20 #include "content/child/child_process.h" |
(...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
281 | 282 |
282 #if defined(OS_WIN) | 283 #if defined(OS_WIN) |
283 // If code subsequently tries to exit using abort(), force a crash (since | 284 // If code subsequently tries to exit using abort(), force a crash (since |
284 // otherwise these would be silent terminations and fly under the radar). | 285 // otherwise these would be silent terminations and fly under the radar). |
285 base::win::SetAbortBehaviorForCrashReporting(); | 286 base::win::SetAbortBehaviorForCrashReporting(); |
286 | 287 |
287 // Once we lower the token the sandbox is locked down and no new modules | 288 // Once we lower the token the sandbox is locked down and no new modules |
288 // can be loaded. TODO(cpu): consider changing to the loading style of | 289 // can be loaded. TODO(cpu): consider changing to the loading style of |
289 // regular plugins. | 290 // regular plugins. |
290 if (g_target_services) { | 291 if (g_target_services) { |
291 // Let Flash load DRM before lockdown on Vista+. | 292 // Let Flash load DXVA before lockdown on Vista+. |
292 if (permissions.HasPermission(ppapi::PERMISSION_FLASH) && | 293 if (permissions.HasPermission(ppapi::PERMISSION_FLASH)) { |
293 base::win::OSInfo::GetInstance()->version() >= | 294 if (base::win::OSInfo::GetInstance()->version() >= |
294 base::win::VERSION_VISTA ) { | 295 base::win::VERSION_VISTA) { |
295 LoadLibrary(L"dxva2.dll"); | 296 LoadLibraryA("dxva2.dll"); |
| 297 } |
| 298 |
| 299 if (base::win::OSInfo::GetInstance()->version() >= |
| 300 base::win::VERSION_WIN7) { |
| 301 base::CPU cpu; |
| 302 if ((cpu.vendor_name() == "AuthenticAMD") && (cpu.family() > 0x14)) { |
| 303 // The AMD crypto acceleration is only AMD Bulldozer and above. |
| 304 #if defined(_WIN64) |
| 305 LoadLibraryA("amdhcp64.dll"); |
| 306 #else |
| 307 LoadLibraryA("amdhcp32.dll"); |
| 308 #endif |
| 309 } |
| 310 } |
296 } | 311 } |
297 | 312 |
298 // Cause advapi32 to load before the sandbox is turned on. | 313 // Cause advapi32 to load before the sandbox is turned on. |
299 unsigned int dummy_rand; | 314 unsigned int dummy_rand; |
300 rand_s(&dummy_rand); | 315 rand_s(&dummy_rand); |
301 // Warm up language subsystems before the sandbox is turned on. | 316 // Warm up language subsystems before the sandbox is turned on. |
302 ::GetUserDefaultLangID(); | 317 ::GetUserDefaultLangID(); |
303 ::GetUserDefaultLCID(); | 318 ::GetUserDefaultLCID(); |
304 | 319 |
305 if (permissions.HasPermission(ppapi::PERMISSION_FLASH)) { | 320 if (permissions.HasPermission(ppapi::PERMISSION_FLASH)) { |
306 // Warm up system locales. | 321 // Warm up system locales. |
307 EnumSystemLocalesW(EnumLocalesProc, LCID_INSTALLED); | 322 EnumSystemLocalesW(EnumLocalesProc, LCID_INSTALLED); |
308 } | 323 } |
309 | 324 // Engage the sandbox. |
310 g_target_services->LowerToken(); | 325 g_target_services->LowerToken(); |
311 } | 326 } |
312 #endif | 327 #endif |
313 | 328 |
314 if (is_broker_) { | 329 if (is_broker_) { |
315 // Get the InitializeBroker function (required). | 330 // Get the InitializeBroker function (required). |
316 InitializeBrokerFunc init_broker = | 331 InitializeBrokerFunc init_broker = |
317 reinterpret_cast<InitializeBrokerFunc>( | 332 reinterpret_cast<InitializeBrokerFunc>( |
318 library.GetFunctionPointer("PPP_InitializeBroker")); | 333 library.GetFunctionPointer("PPP_InitializeBroker")); |
319 if (!init_broker) { | 334 if (!init_broker) { |
(...skipping 155 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
475 histogram_name.str(), | 490 histogram_name.str(), |
476 1, | 491 1, |
477 LOAD_RESULT_MAX, | 492 LOAD_RESULT_MAX, |
478 LOAD_RESULT_MAX + 1, | 493 LOAD_RESULT_MAX + 1, |
479 base::HistogramBase::kUmaTargetedHistogramFlag); | 494 base::HistogramBase::kUmaTargetedHistogramFlag); |
480 | 495 |
481 histogram->Add(result); | 496 histogram->Add(result); |
482 } | 497 } |
483 | 498 |
484 } // namespace content | 499 } // namespace content |
OLD | NEW |