| 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/renderer/renderer_webkitplatformsupport_impl.h" | 5 #include "content/renderer/renderer_webkitplatformsupport_impl.h" |
| 6 | 6 |
| 7 #include "base/command_line.h" | 7 #include "base/command_line.h" |
| 8 #include "base/file_path.h" | 8 #include "base/file_path.h" |
| 9 #include "base/file_util.h" | 9 #include "base/file_util.h" |
| 10 #include "base/metrics/histogram.h" | 10 #include "base/metrics/histogram.h" |
| (...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 72 #include "base/synchronization/lock.h" | 72 #include "base/synchronization/lock.h" |
| 73 #include "content/common/child_process_sandbox_support_impl_linux.h" | 73 #include "content/common/child_process_sandbox_support_impl_linux.h" |
| 74 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/linux/WebFon
tFamily.h" | 74 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/linux/WebFon
tFamily.h" |
| 75 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/linux/WebSan
dboxSupport.h" | 75 #include "third_party/WebKit/Source/WebKit/chromium/public/platform/linux/WebSan
dboxSupport.h" |
| 76 #endif | 76 #endif |
| 77 | 77 |
| 78 #if defined(OS_POSIX) | 78 #if defined(OS_POSIX) |
| 79 #include "base/file_descriptor_posix.h" | 79 #include "base/file_descriptor_posix.h" |
| 80 #endif | 80 #endif |
| 81 | 81 |
| 82 using content::RenderThread; |
| 82 using WebKit::WebAudioDevice; | 83 using WebKit::WebAudioDevice; |
| 83 using WebKit::WebBlobRegistry; | 84 using WebKit::WebBlobRegistry; |
| 84 using WebKit::WebFileInfo; | 85 using WebKit::WebFileInfo; |
| 85 using WebKit::WebFileSystem; | 86 using WebKit::WebFileSystem; |
| 86 using WebKit::WebFrame; | 87 using WebKit::WebFrame; |
| 87 using WebKit::WebGamepads; | 88 using WebKit::WebGamepads; |
| 88 using WebKit::WebIDBFactory; | 89 using WebKit::WebIDBFactory; |
| 89 using WebKit::WebIDBKey; | 90 using WebKit::WebIDBKey; |
| 90 using WebKit::WebIDBKeyPath; | 91 using WebKit::WebIDBKeyPath; |
| 91 using WebKit::WebKitPlatformSupport; | 92 using WebKit::WebKitPlatformSupport; |
| (...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 160 }; | 161 }; |
| 161 #endif // defined(OS_ANDROID) | 162 #endif // defined(OS_ANDROID) |
| 162 | 163 |
| 163 //------------------------------------------------------------------------------ | 164 //------------------------------------------------------------------------------ |
| 164 | 165 |
| 165 RendererWebKitPlatformSupportImpl::RendererWebKitPlatformSupportImpl() | 166 RendererWebKitPlatformSupportImpl::RendererWebKitPlatformSupportImpl() |
| 166 : clipboard_client_(new RendererClipboardClient), | 167 : clipboard_client_(new RendererClipboardClient), |
| 167 clipboard_(new webkit_glue::WebClipboardImpl(clipboard_client_.get())), | 168 clipboard_(new webkit_glue::WebClipboardImpl(clipboard_client_.get())), |
| 168 mime_registry_(new RendererWebKitPlatformSupportImpl::MimeRegistry), | 169 mime_registry_(new RendererWebKitPlatformSupportImpl::MimeRegistry), |
| 169 sudden_termination_disables_(0), | 170 sudden_termination_disables_(0), |
| 171 plugin_refresh_allowed_(true), |
| 170 shared_worker_repository_(new WebSharedWorkerRepositoryImpl) { | 172 shared_worker_repository_(new WebSharedWorkerRepositoryImpl) { |
| 171 if (g_sandbox_enabled) { | 173 if (g_sandbox_enabled) { |
| 172 sandbox_support_.reset( | 174 sandbox_support_.reset( |
| 173 new RendererWebKitPlatformSupportImpl::SandboxSupport); | 175 new RendererWebKitPlatformSupportImpl::SandboxSupport); |
| 174 } else { | 176 } else { |
| 175 DVLOG(1) << "Disabling sandbox support for testing."; | 177 DVLOG(1) << "Disabling sandbox support for testing."; |
| 176 } | 178 } |
| 177 } | 179 } |
| 178 | 180 |
| 179 RendererWebKitPlatformSupportImpl::~RendererWebKitPlatformSupportImpl() { | 181 RendererWebKitPlatformSupportImpl::~RendererWebKitPlatformSupportImpl() { |
| 180 } | 182 } |
| 181 | 183 |
| 182 //------------------------------------------------------------------------------ | 184 //------------------------------------------------------------------------------ |
| 183 | 185 |
| 184 namespace { | 186 namespace { |
| 185 | 187 |
| 186 bool SendSyncMessageFromAnyThreadInternal(IPC::SyncMessage* msg) { | 188 bool SendSyncMessageFromAnyThreadInternal(IPC::SyncMessage* msg) { |
| 187 RenderThreadImpl* render_thread = RenderThreadImpl::current(); | 189 RenderThread* render_thread = RenderThread::Get(); |
| 188 if (render_thread) | 190 if (render_thread) |
| 189 return render_thread->Send(msg); | 191 return render_thread->Send(msg); |
| 190 scoped_refptr<IPC::SyncMessageFilter> sync_msg_filter( | 192 scoped_refptr<IPC::SyncMessageFilter> sync_msg_filter( |
| 191 ChildThread::current()->sync_message_filter()); | 193 ChildThread::current()->sync_message_filter()); |
| 192 return sync_msg_filter->Send(msg); | 194 return sync_msg_filter->Send(msg); |
| 193 } | 195 } |
| 194 | 196 |
| 195 bool SendSyncMessageFromAnyThread(IPC::SyncMessage* msg) { | 197 bool SendSyncMessageFromAnyThread(IPC::SyncMessage* msg) { |
| 196 base::TimeTicks begin = base::TimeTicks::Now(); | 198 base::TimeTicks begin = base::TimeTicks::Now(); |
| 197 const bool success = SendSyncMessageFromAnyThreadInternal(msg); | 199 const bool success = SendSyncMessageFromAnyThreadInternal(msg); |
| (...skipping 91 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 289 double response_time, | 291 double response_time, |
| 290 const char* data, | 292 const char* data, |
| 291 size_t size) { | 293 size_t size) { |
| 292 if (!CheckPreparsedJsCachingEnabled()) | 294 if (!CheckPreparsedJsCachingEnabled()) |
| 293 return; | 295 return; |
| 294 | 296 |
| 295 // Let the browser know we generated cacheable metadata for this resource. The | 297 // Let the browser know we generated cacheable metadata for this resource. The |
| 296 // browser may cache it and return it on subsequent responses to speed | 298 // browser may cache it and return it on subsequent responses to speed |
| 297 // the processing of this resource. | 299 // the processing of this resource. |
| 298 std::vector<char> copy(data, data + size); | 300 std::vector<char> copy(data, data + size); |
| 299 RenderThreadImpl::current()->Send( | 301 RenderThread::Get()->Send( |
| 300 new ViewHostMsg_DidGenerateCacheableMetadata(url, response_time, copy)); | 302 new ViewHostMsg_DidGenerateCacheableMetadata(url, response_time, copy)); |
| 301 } | 303 } |
| 302 | 304 |
| 303 WebString RendererWebKitPlatformSupportImpl::defaultLocale() { | 305 WebString RendererWebKitPlatformSupportImpl::defaultLocale() { |
| 304 return ASCIIToUTF16(RenderThreadImpl::Get()->GetLocale()); | 306 return ASCIIToUTF16(RenderThread::Get()->GetLocale()); |
| 305 } | 307 } |
| 306 | 308 |
| 307 void RendererWebKitPlatformSupportImpl::suddenTerminationChanged(bool enabled) { | 309 void RendererWebKitPlatformSupportImpl::suddenTerminationChanged(bool enabled) { |
| 308 if (enabled) { | 310 if (enabled) { |
| 309 // We should not get more enables than disables, but we want it to be a | 311 // We should not get more enables than disables, but we want it to be a |
| 310 // non-fatal error if it does happen. | 312 // non-fatal error if it does happen. |
| 311 DCHECK_GT(sudden_termination_disables_, 0); | 313 DCHECK_GT(sudden_termination_disables_, 0); |
| 312 sudden_termination_disables_ = std::max(sudden_termination_disables_ - 1, | 314 sudden_termination_disables_ = std::max(sudden_termination_disables_ - 1, |
| 313 0); | 315 0); |
| 314 if (sudden_termination_disables_ != 0) | 316 if (sudden_termination_disables_ != 0) |
| 315 return; | 317 return; |
| 316 } else { | 318 } else { |
| 317 sudden_termination_disables_++; | 319 sudden_termination_disables_++; |
| 318 if (sudden_termination_disables_ != 1) | 320 if (sudden_termination_disables_ != 1) |
| 319 return; | 321 return; |
| 320 } | 322 } |
| 321 | 323 |
| 322 RenderThreadImpl* thread = RenderThreadImpl::current(); | 324 RenderThread* thread = RenderThread::Get(); |
| 323 if (thread) // NULL in unittests. | 325 if (thread) // NULL in unittests. |
| 324 thread->Send(new ViewHostMsg_SuddenTerminationChanged(enabled)); | 326 thread->Send(new ViewHostMsg_SuddenTerminationChanged(enabled)); |
| 325 } | 327 } |
| 326 | 328 |
| 327 WebStorageNamespace* | 329 WebStorageNamespace* |
| 328 RendererWebKitPlatformSupportImpl::createLocalStorageNamespace( | 330 RendererWebKitPlatformSupportImpl::createLocalStorageNamespace( |
| 329 const WebString& path, unsigned quota) { | 331 const WebString& path, unsigned quota) { |
| 330 return new WebStorageNamespaceImpl(); | 332 return new WebStorageNamespaceImpl(); |
| 331 } | 333 } |
| 332 | 334 |
| (...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 378 | 380 |
| 379 WebString | 381 WebString |
| 380 RendererWebKitPlatformSupportImpl::MimeRegistry::mimeTypeForExtension( | 382 RendererWebKitPlatformSupportImpl::MimeRegistry::mimeTypeForExtension( |
| 381 const WebString& file_extension) { | 383 const WebString& file_extension) { |
| 382 if (IsPluginProcess()) | 384 if (IsPluginProcess()) |
| 383 return SimpleWebMimeRegistryImpl::mimeTypeForExtension(file_extension); | 385 return SimpleWebMimeRegistryImpl::mimeTypeForExtension(file_extension); |
| 384 | 386 |
| 385 // The sandbox restricts our access to the registry, so we need to proxy | 387 // The sandbox restricts our access to the registry, so we need to proxy |
| 386 // these calls over to the browser process. | 388 // these calls over to the browser process. |
| 387 std::string mime_type; | 389 std::string mime_type; |
| 388 RenderThreadImpl::current()->Send( | 390 RenderThread::Get()->Send( |
| 389 new MimeRegistryMsg_GetMimeTypeFromExtension( | 391 new MimeRegistryMsg_GetMimeTypeFromExtension( |
| 390 webkit_glue::WebStringToFilePathString(file_extension), &mime_type)); | 392 webkit_glue::WebStringToFilePathString(file_extension), &mime_type)); |
| 391 return ASCIIToUTF16(mime_type); | 393 return ASCIIToUTF16(mime_type); |
| 392 | 394 |
| 393 } | 395 } |
| 394 | 396 |
| 395 WebString RendererWebKitPlatformSupportImpl::MimeRegistry::mimeTypeFromFile( | 397 WebString RendererWebKitPlatformSupportImpl::MimeRegistry::mimeTypeFromFile( |
| 396 const WebString& file_path) { | 398 const WebString& file_path) { |
| 397 if (IsPluginProcess()) | 399 if (IsPluginProcess()) |
| 398 return SimpleWebMimeRegistryImpl::mimeTypeFromFile(file_path); | 400 return SimpleWebMimeRegistryImpl::mimeTypeFromFile(file_path); |
| 399 | 401 |
| 400 // The sandbox restricts our access to the registry, so we need to proxy | 402 // The sandbox restricts our access to the registry, so we need to proxy |
| 401 // these calls over to the browser process. | 403 // these calls over to the browser process. |
| 402 std::string mime_type; | 404 std::string mime_type; |
| 403 RenderThreadImpl::current()->Send(new MimeRegistryMsg_GetMimeTypeFromFile( | 405 RenderThread::Get()->Send(new MimeRegistryMsg_GetMimeTypeFromFile( |
| 404 FilePath(webkit_glue::WebStringToFilePathString(file_path)), | 406 FilePath(webkit_glue::WebStringToFilePathString(file_path)), |
| 405 &mime_type)); | 407 &mime_type)); |
| 406 return ASCIIToUTF16(mime_type); | 408 return ASCIIToUTF16(mime_type); |
| 407 | 409 |
| 408 } | 410 } |
| 409 | 411 |
| 410 WebString | 412 WebString |
| 411 RendererWebKitPlatformSupportImpl::MimeRegistry::preferredExtensionForMIMEType( | 413 RendererWebKitPlatformSupportImpl::MimeRegistry::preferredExtensionForMIMEType( |
| 412 const WebString& mime_type) { | 414 const WebString& mime_type) { |
| 413 if (IsPluginProcess()) | 415 if (IsPluginProcess()) |
| 414 return SimpleWebMimeRegistryImpl::preferredExtensionForMIMEType(mime_type); | 416 return SimpleWebMimeRegistryImpl::preferredExtensionForMIMEType(mime_type); |
| 415 | 417 |
| 416 // The sandbox restricts our access to the registry, so we need to proxy | 418 // The sandbox restricts our access to the registry, so we need to proxy |
| 417 // these calls over to the browser process. | 419 // these calls over to the browser process. |
| 418 FilePath::StringType file_extension; | 420 FilePath::StringType file_extension; |
| 419 RenderThreadImpl::current()->Send( | 421 RenderThread::Get()->Send( |
| 420 new MimeRegistryMsg_GetPreferredExtensionForMimeType( | 422 new MimeRegistryMsg_GetPreferredExtensionForMimeType( |
| 421 UTF16ToASCII(mime_type), &file_extension)); | 423 UTF16ToASCII(mime_type), &file_extension)); |
| 422 return webkit_glue::FilePathStringToWebString(file_extension); | 424 return webkit_glue::FilePathStringToWebString(file_extension); |
| 423 } | 425 } |
| 424 | 426 |
| 425 //------------------------------------------------------------------------------ | 427 //------------------------------------------------------------------------------ |
| 426 | 428 |
| 427 bool RendererWebKitPlatformSupportImpl::FileUtilities::getFileInfo( | 429 bool RendererWebKitPlatformSupportImpl::FileUtilities::getFileInfo( |
| 428 const WebString& path, | 430 const WebString& path, |
| 429 WebFileInfo& web_file_info) { | 431 WebFileInfo& web_file_info) { |
| (...skipping 19 matching lines...) Expand all Loading... |
| 449 } | 451 } |
| 450 | 452 |
| 451 //------------------------------------------------------------------------------ | 453 //------------------------------------------------------------------------------ |
| 452 | 454 |
| 453 #if defined(OS_WIN) | 455 #if defined(OS_WIN) |
| 454 | 456 |
| 455 bool RendererWebKitPlatformSupportImpl::SandboxSupport::ensureFontLoaded( | 457 bool RendererWebKitPlatformSupportImpl::SandboxSupport::ensureFontLoaded( |
| 456 HFONT font) { | 458 HFONT font) { |
| 457 LOGFONT logfont; | 459 LOGFONT logfont; |
| 458 GetObject(font, sizeof(LOGFONT), &logfont); | 460 GetObject(font, sizeof(LOGFONT), &logfont); |
| 459 RenderThreadImpl::current()->PreCacheFont(logfont); | 461 RenderThread::Get()->PreCacheFont(logfont); |
| 460 return true; | 462 return true; |
| 461 } | 463 } |
| 462 | 464 |
| 463 #elif defined(OS_MACOSX) | 465 #elif defined(OS_MACOSX) |
| 464 | 466 |
| 465 bool RendererWebKitPlatformSupportImpl::SandboxSupport::loadFont( | 467 bool RendererWebKitPlatformSupportImpl::SandboxSupport::loadFont( |
| 466 NSFont* src_font, CGFontRef* out, uint32* font_id) { | 468 NSFont* src_font, CGFontRef* out, uint32* font_id) { |
| 467 uint32 font_data_size; | 469 uint32 font_data_size; |
| 468 FontDescriptor src_font_descriptor(src_font); | 470 FontDescriptor src_font_descriptor(src_font); |
| 469 base::SharedMemoryHandle font_data; | 471 base::SharedMemoryHandle font_data; |
| 470 if (!RenderThreadImpl::current()->Send(new ViewHostMsg_LoadFont( | 472 if (!RenderThread::Get()->Send(new ViewHostMsg_LoadFont( |
| 471 src_font_descriptor, &font_data_size, &font_data, font_id))) { | 473 src_font_descriptor, &font_data_size, &font_data, font_id))) { |
| 472 *out = NULL; | 474 *out = NULL; |
| 473 *font_id = 0; | 475 *font_id = 0; |
| 474 return false; | 476 return false; |
| 475 } | 477 } |
| 476 | 478 |
| 477 if (font_data_size == 0 || font_data == base::SharedMemory::NULLHandle() || | 479 if (font_data_size == 0 || font_data == base::SharedMemory::NULLHandle() || |
| 478 *font_id == 0) { | 480 *font_id == 0) { |
| 479 LOG(ERROR) << "Bad response from ViewHostMsg_LoadFont() for " << | 481 LOG(ERROR) << "Bad response from ViewHostMsg_LoadFont() for " << |
| 480 src_font_descriptor.font_name; | 482 src_font_descriptor.font_name; |
| (...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 641 } | 643 } |
| 642 | 644 |
| 643 //------------------------------------------------------------------------------ | 645 //------------------------------------------------------------------------------ |
| 644 | 646 |
| 645 WebKit::WebString | 647 WebKit::WebString |
| 646 RendererWebKitPlatformSupportImpl::signedPublicKeyAndChallengeString( | 648 RendererWebKitPlatformSupportImpl::signedPublicKeyAndChallengeString( |
| 647 unsigned key_size_index, | 649 unsigned key_size_index, |
| 648 const WebKit::WebString& challenge, | 650 const WebKit::WebString& challenge, |
| 649 const WebKit::WebURL& url) { | 651 const WebKit::WebURL& url) { |
| 650 std::string signed_public_key; | 652 std::string signed_public_key; |
| 651 RenderThreadImpl::current()->Send(new ViewHostMsg_Keygen( | 653 RenderThread::Get()->Send(new ViewHostMsg_Keygen( |
| 652 static_cast<uint32>(key_size_index), | 654 static_cast<uint32>(key_size_index), |
| 653 challenge.utf8(), | 655 challenge.utf8(), |
| 654 GURL(url), | 656 GURL(url), |
| 655 &signed_public_key)); | 657 &signed_public_key)); |
| 656 return WebString::fromUTF8(signed_public_key); | 658 return WebString::fromUTF8(signed_public_key); |
| 657 } | 659 } |
| 658 | 660 |
| 659 //------------------------------------------------------------------------------ | 661 //------------------------------------------------------------------------------ |
| 660 | 662 |
| 661 void RendererWebKitPlatformSupportImpl::screenColorProfile( | 663 void RendererWebKitPlatformSupportImpl::screenColorProfile( |
| 662 WebVector<char>* to_profile) { | 664 WebVector<char>* to_profile) { |
| 663 std::vector<char> profile; | 665 std::vector<char> profile; |
| 664 RenderThreadImpl::current()->Send( | 666 RenderThread::Get()->Send( |
| 665 new ViewHostMsg_GetMonitorColorProfile(&profile)); | 667 new ViewHostMsg_GetMonitorColorProfile(&profile)); |
| 666 *to_profile = profile; | 668 *to_profile = profile; |
| 667 } | 669 } |
| 668 | 670 |
| 669 //------------------------------------------------------------------------------ | 671 //------------------------------------------------------------------------------ |
| 670 | 672 |
| 671 WebBlobRegistry* RendererWebKitPlatformSupportImpl::blobRegistry() { | 673 WebBlobRegistry* RendererWebKitPlatformSupportImpl::blobRegistry() { |
| 672 // ChildThread::current can be NULL when running some tests. | 674 // ChildThread::current can be NULL when running some tests. |
| 673 if (!blob_registry_.get() && ChildThread::current()) { | 675 if (!blob_registry_.get() && ChildThread::current()) { |
| 674 blob_registry_.reset(new WebBlobRegistryImpl(ChildThread::current())); | 676 blob_registry_.reset(new WebBlobRegistryImpl(ChildThread::current())); |
| 675 } | 677 } |
| 676 return blob_registry_.get(); | 678 return blob_registry_.get(); |
| 677 } | 679 } |
| 678 | 680 |
| 679 //------------------------------------------------------------------------------ | 681 //------------------------------------------------------------------------------ |
| 680 | 682 |
| 681 void RendererWebKitPlatformSupportImpl::sampleGamepads(WebGamepads& gamepads) { | 683 void RendererWebKitPlatformSupportImpl::sampleGamepads(WebGamepads& gamepads) { |
| 682 if (!gamepad_shared_memory_reader_.get()) | 684 if (!gamepad_shared_memory_reader_.get()) |
| 683 gamepad_shared_memory_reader_.reset(new content::GamepadSharedMemoryReader); | 685 gamepad_shared_memory_reader_.reset(new content::GamepadSharedMemoryReader); |
| 684 gamepad_shared_memory_reader_->SampleGamepads(gamepads); | 686 gamepad_shared_memory_reader_->SampleGamepads(gamepads); |
| 685 } | 687 } |
| 686 | 688 |
| 687 WebKit::WebString RendererWebKitPlatformSupportImpl::userAgent( | 689 WebKit::WebString RendererWebKitPlatformSupportImpl::userAgent( |
| 688 const WebKit::WebURL& url) { | 690 const WebKit::WebURL& url) { |
| 689 return WebKitPlatformSupportImpl::userAgent(url); | 691 return WebKitPlatformSupportImpl::userAgent(url); |
| 690 } | 692 } |
| 691 | 693 |
| 692 void RendererWebKitPlatformSupportImpl::GetPlugins( | 694 void RendererWebKitPlatformSupportImpl::GetPlugins( |
| 693 bool refresh, std::vector<webkit::WebPluginInfo>* plugins) { | 695 bool refresh, std::vector<webkit::WebPluginInfo>* plugins) { |
| 694 if (!RenderThreadImpl::current()->plugin_refresh_allowed()) | 696 if (!plugin_refresh_allowed_) |
| 695 refresh = false; | 697 refresh = false; |
| 696 RenderThreadImpl::current()->Send( | 698 RenderThread::Get()->Send( |
| 697 new ViewHostMsg_GetPlugins(refresh, plugins)); | 699 new ViewHostMsg_GetPlugins(refresh, plugins)); |
| 698 } | 700 } |
| 699 | 701 |
| 700 //------------------------------------------------------------------------------ | 702 //------------------------------------------------------------------------------ |
| 701 | 703 |
| 702 WebPeerConnection00Handler* | 704 WebPeerConnection00Handler* |
| 703 RendererWebKitPlatformSupportImpl::createPeerConnection00Handler( | 705 RendererWebKitPlatformSupportImpl::createPeerConnection00Handler( |
| 704 WebPeerConnection00HandlerClient* client) { | 706 WebPeerConnection00HandlerClient* client) { |
| 705 WebFrame* web_frame = WebFrame::frameForCurrentContext(); | 707 WebFrame* web_frame = WebFrame::frameForCurrentContext(); |
| 706 if (!web_frame) | 708 if (!web_frame) |
| (...skipping 21 matching lines...) Expand all Loading... |
| 728 bool enable) { | 730 bool enable) { |
| 729 bool was_enabled = g_sandbox_enabled; | 731 bool was_enabled = g_sandbox_enabled; |
| 730 g_sandbox_enabled = enable; | 732 g_sandbox_enabled = enable; |
| 731 return was_enabled; | 733 return was_enabled; |
| 732 } | 734 } |
| 733 | 735 |
| 734 GpuChannelHostFactory* | 736 GpuChannelHostFactory* |
| 735 RendererWebKitPlatformSupportImpl::GetGpuChannelHostFactory() { | 737 RendererWebKitPlatformSupportImpl::GetGpuChannelHostFactory() { |
| 736 return RenderThreadImpl::current(); | 738 return RenderThreadImpl::current(); |
| 737 } | 739 } |
| OLD | NEW |