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

Side by Side Diff: content/renderer/renderer_webkitclient_impl.cc

Issue 7080024: Mac: Part 1 of a fix to get OOP font loading working in the renderer on 10.6.6 . (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 6 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
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 "content/renderer/renderer_webkitclient_impl.h" 5 #include "content/renderer/renderer_webkitclient_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/platform_file.h" 10 #include "base/platform_file.h"
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after
106 virtual base::PlatformFile openFile(const WebKit::WebString& path, 106 virtual base::PlatformFile openFile(const WebKit::WebString& path,
107 int mode); 107 int mode);
108 }; 108 };
109 109
110 class RendererWebKitClientImpl::SandboxSupport 110 class RendererWebKitClientImpl::SandboxSupport
111 : public WebKit::WebSandboxSupport { 111 : public WebKit::WebSandboxSupport {
112 public: 112 public:
113 #if defined(OS_WIN) 113 #if defined(OS_WIN)
114 virtual bool ensureFontLoaded(HFONT); 114 virtual bool ensureFontLoaded(HFONT);
115 #elif defined(OS_MACOSX) 115 #elif defined(OS_MACOSX)
116 // TODO(jeremy): Remove once WebKit side of patch lands - crbug.com/72727 .
116 virtual bool loadFont(NSFont* srcFont, ATSFontContainerRef* out); 117 virtual bool loadFont(NSFont* srcFont, ATSFontContainerRef* out);
118 virtual bool loadFont(
119 NSFont* srcFont, ATSFontContainerRef* container, uint32* fontID);
117 #elif defined(OS_LINUX) 120 #elif defined(OS_LINUX)
118 virtual WebKit::WebString getFontFamilyForCharacters( 121 virtual WebKit::WebString getFontFamilyForCharacters(
119 const WebKit::WebUChar* characters, 122 const WebKit::WebUChar* characters,
120 size_t numCharacters, 123 size_t numCharacters,
121 const char* preferred_locale); 124 const char* preferred_locale);
122 virtual void getRenderStyleForStrike( 125 virtual void getRenderStyleForStrike(
123 const char* family, int sizeAndStyle, WebKit::WebFontRenderStyle* out); 126 const char* family, int sizeAndStyle, WebKit::WebFontRenderStyle* out);
124 127
125 private: 128 private:
126 // WebKit likes to ask us for the correct font family to use for a set of 129 // WebKit likes to ask us for the correct font family to use for a set of
(...skipping 329 matching lines...) Expand 10 before | Expand all | Expand 10 after
456 } 459 }
457 460
458 void RendererWebKitClientImpl::SandboxSupport::getRenderStyleForStrike( 461 void RendererWebKitClientImpl::SandboxSupport::getRenderStyleForStrike(
459 const char* family, int sizeAndStyle, WebKit::WebFontRenderStyle* out) { 462 const char* family, int sizeAndStyle, WebKit::WebFontRenderStyle* out) {
460 child_process_sandbox_support::getRenderStyleForStrike(family, sizeAndStyle, 463 child_process_sandbox_support::getRenderStyleForStrike(family, sizeAndStyle,
461 out); 464 out);
462 } 465 }
463 466
464 #elif defined(OS_MACOSX) 467 #elif defined(OS_MACOSX)
465 468
469 // TODO(jeremy): Remove once WebKit side of patch lands - crbug.com/72727 .
466 bool RendererWebKitClientImpl::SandboxSupport::loadFont(NSFont* srcFont, 470 bool RendererWebKitClientImpl::SandboxSupport::loadFont(NSFont* srcFont,
467 ATSFontContainerRef* out) { 471 ATSFontContainerRef* out) {
472 uint32 temp;
473 return loadFont(srcFont, out, &temp);
474 }
475
476 bool RendererWebKitClientImpl::SandboxSupport::loadFont(NSFont* srcFont,
brettw 2011/05/30 13:05:47 Style: the args should be aligned horizontally, so
477 ATSFontContainerRef* container, uint32* fontID) {
468 DCHECK(srcFont); 478 DCHECK(srcFont);
469 DCHECK(out); 479 DCHECK(container);
480 DCHECK(fontID);
470 481
471 uint32 font_data_size; 482 uint32 font_data_size;
472 FontDescriptor src_font_descriptor(srcFont); 483 FontDescriptor src_font_descriptor(srcFont);
473 base::SharedMemoryHandle font_data; 484 base::SharedMemoryHandle font_data;
474 if (!RenderThread::current()->Send(new ViewHostMsg_LoadFont( 485 if (!RenderThread::current()->Send(new ViewHostMsg_LoadFont(
475 src_font_descriptor, &font_data_size, &font_data))) { 486 src_font_descriptor, &font_data_size, &font_data, fontID))) {
476 LOG(ERROR) << "Sending ViewHostMsg_LoadFont() IPC failed for " << 487 LOG(ERROR) << "Sending ViewHostMsg_LoadFont() IPC failed for " <<
477 src_font_descriptor.font_name; 488 src_font_descriptor.font_name;
478 *out = kATSFontContainerRefUnspecified; 489 *container = kATSFontContainerRefUnspecified;
490 *fontID = 0;
479 return false; 491 return false;
480 } 492 }
481 493
482 if (font_data_size == 0 || font_data == base::SharedMemory::NULLHandle()) { 494 if (font_data_size == 0 || font_data == base::SharedMemory::NULLHandle() ||
495 *fontID == 0) {
483 LOG(ERROR) << "Bad response from ViewHostMsg_LoadFont() for " << 496 LOG(ERROR) << "Bad response from ViewHostMsg_LoadFont() for " <<
484 src_font_descriptor.font_name; 497 src_font_descriptor.font_name;
485 *out = kATSFontContainerRefUnspecified; 498 *container = kATSFontContainerRefUnspecified;
499 *fontID = 0;
486 return false; 500 return false;
487 } 501 }
488 502
489 return FontLoader::ATSFontContainerFromBuffer(font_data, font_data_size, out); 503 // TODO(jeremy): Need to call back into WebKit to make sure that the font
504 // isn't already activated, based on the font id. If it's already
505 // activated, don't reactivate it here - crbug.com/72727 .
506 return FontLoader::ATSFontContainerFromBuffer(font_data, font_data_size,
507 container);
490 } 508 }
491 509
492 #endif 510 #endif
493 511
494 //------------------------------------------------------------------------------ 512 //------------------------------------------------------------------------------
495 513
496 WebKitClient::FileHandle RendererWebKitClientImpl::databaseOpenFile( 514 WebKitClient::FileHandle RendererWebKitClientImpl::databaseOpenFile(
497 const WebString& vfs_file_name, int desired_flags) { 515 const WebString& vfs_file_name, int desired_flags) {
498 return DatabaseUtil::DatabaseOpenFile(vfs_file_name, desired_flags); 516 return DatabaseUtil::DatabaseOpenFile(vfs_file_name, desired_flags);
499 } 517 }
(...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after
576 } 594 }
577 595
578 //------------------------------------------------------------------------------ 596 //------------------------------------------------------------------------------
579 597
580 WebBlobRegistry* RendererWebKitClientImpl::blobRegistry() { 598 WebBlobRegistry* RendererWebKitClientImpl::blobRegistry() {
581 // RenderThread::current can be NULL when running some tests. 599 // RenderThread::current can be NULL when running some tests.
582 if (!blob_registry_.get() && RenderThread::current()) 600 if (!blob_registry_.get() && RenderThread::current())
583 blob_registry_.reset(new WebBlobRegistryImpl(RenderThread::current())); 601 blob_registry_.reset(new WebBlobRegistryImpl(RenderThread::current()));
584 return blob_registry_.get(); 602 return blob_registry_.get();
585 } 603 }
OLDNEW
« content/common/font_loader_mac.mm ('K') | « content/common/view_messages.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698