OLD | NEW |
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/ppapi_plugin/ppapi_webkitplatformsupport_impl.h" | 5 #include "content/ppapi_plugin/ppapi_webkitplatformsupport_impl.h" |
6 | 6 |
7 #include <map> | 7 #include <map> |
8 | 8 |
9 #include "base/synchronization/lock.h" | 9 #include "base/synchronization/lock.h" |
10 #include "base/logging.h" | 10 #include "base/logging.h" |
11 #include "base/string16.h" | 11 #include "base/string16.h" |
12 #include "build/build_config.h" | 12 #include "build/build_config.h" |
13 #include "content/common/child_process_messages.h" | 13 #include "content/common/child_process_messages.h" |
14 #include "content/common/child_thread.h" | 14 #include "content/common/child_thread.h" |
15 #include "ipc/ipc_sync_message_filter.h" | 15 #include "ipc/ipc_sync_message_filter.h" |
16 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSerializedScriptVa
lue.h" | 16 #include "third_party/WebKit/Source/WebKit/chromium/public/WebSerializedScriptVa
lue.h" |
17 #include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h" | 17 #include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h" |
18 | 18 |
19 #if defined(OS_WIN) | 19 #if defined(OS_WIN) |
20 #include "third_party/WebKit/Source/WebKit/chromium/public/win/WebSandboxSupport
.h" | 20 #include "third_party/WebKit/Source/WebKit/chromium/public/win/WebSandboxSupport
.h" |
21 #elif defined(OS_MACOSX) | 21 #elif defined(OS_MACOSX) |
22 #include "third_party/WebKit/Source/WebKit/chromium/public/mac/WebSandboxSupport
.h" | 22 #include "third_party/WebKit/Source/WebKit/chromium/public/mac/WebSandboxSupport
.h" |
23 #elif defined(OS_POSIX) | 23 #elif defined(OS_POSIX) |
24 #include "content/common/child_process_sandbox_support_impl_linux.h" | 24 #include "content/common/child_process_sandbox_support_impl_linux.h" |
| 25 #include "third_party/WebKit/Source/WebKit/chromium/public/linux/WebFontFamily.h
" |
25 #include "third_party/WebKit/Source/WebKit/chromium/public/linux/WebSandboxSuppo
rt.h" | 26 #include "third_party/WebKit/Source/WebKit/chromium/public/linux/WebSandboxSuppo
rt.h" |
26 #endif | 27 #endif |
27 | 28 |
28 using WebKit::WebSandboxSupport; | 29 using WebKit::WebSandboxSupport; |
29 using WebKit::WebString; | 30 using WebKit::WebString; |
30 using WebKit::WebUChar; | 31 using WebKit::WebUChar; |
31 | 32 |
32 typedef struct CGFont* CGFontRef; | 33 typedef struct CGFont* CGFontRef; |
33 | 34 |
34 class PpapiWebKitPlatformSupportImpl::SandboxSupport : public WebSandboxSupport
{ | 35 class PpapiWebKitPlatformSupportImpl::SandboxSupport : public WebSandboxSupport
{ |
35 public: | 36 public: |
36 virtual ~SandboxSupport() {} | 37 virtual ~SandboxSupport() {} |
37 | 38 |
38 #if defined(OS_WIN) | 39 #if defined(OS_WIN) |
39 virtual bool ensureFontLoaded(HFONT); | 40 virtual bool ensureFontLoaded(HFONT); |
40 #elif defined(OS_MACOSX) | 41 #elif defined(OS_MACOSX) |
41 virtual bool loadFont( | 42 virtual bool loadFont( |
42 NSFont* srcFont, CGFontRef* out, uint32_t* fontID); | 43 NSFont* srcFont, CGFontRef* out, uint32_t* fontID); |
43 #elif defined(OS_POSIX) | 44 #elif defined(OS_POSIX) |
44 virtual WebString getFontFamilyForCharacters( | 45 virtual void getFontFamilyForCharacters( |
45 const WebUChar* characters, | 46 const WebUChar* characters, |
46 size_t numCharacters, | 47 size_t numCharacters, |
47 const char* preferred_locale); | 48 const char* preferred_locale, |
| 49 WebKit::WebFontFamily* family); |
48 virtual void getRenderStyleForStrike( | 50 virtual void getRenderStyleForStrike( |
49 const char* family, int sizeAndStyle, WebKit::WebFontRenderStyle* out); | 51 const char* family, int sizeAndStyle, WebKit::WebFontRenderStyle* out); |
50 | 52 |
51 private: | 53 private: |
52 // WebKit likes to ask us for the correct font family to use for a set of | 54 // WebKit likes to ask us for the correct font family to use for a set of |
53 // unicode code points. It needs this information frequently so we cache it | 55 // unicode code points. It needs this information frequently so we cache it |
54 // here. The key in this map is an array of 16-bit UTF16 values from WebKit. | 56 // here. The key in this map is an array of 16-bit UTF16 values from WebKit. |
55 // The value is a string containing the correct font family. | 57 // The value is a string containing the correct font family. |
56 base::Lock unicode_font_families_mutex_; | 58 base::Lock unicode_font_families_mutex_; |
57 std::map<string16, std::string> unicode_font_families_; | 59 std::map<string16, WebKit::WebFontFamily> unicode_font_families_; |
58 #endif | 60 #endif |
59 }; | 61 }; |
60 | 62 |
61 #if defined(OS_WIN) | 63 #if defined(OS_WIN) |
62 | 64 |
63 bool PpapiWebKitPlatformSupportImpl::SandboxSupport::ensureFontLoaded( | 65 bool PpapiWebKitPlatformSupportImpl::SandboxSupport::ensureFontLoaded( |
64 HFONT font) { | 66 HFONT font) { |
65 LOGFONT logfont; | 67 LOGFONT logfont; |
66 GetObject(font, sizeof(LOGFONT), &logfont); | 68 GetObject(font, sizeof(LOGFONT), &logfont); |
67 | 69 |
68 return ChildThread::current()->sync_message_filter()->Send( | 70 return ChildThread::current()->sync_message_filter()->Send( |
69 new ChildProcessHostMsg_PreCacheFont(logfont)); | 71 new ChildProcessHostMsg_PreCacheFont(logfont)); |
70 } | 72 } |
71 | 73 |
72 #elif defined(OS_MACOSX) | 74 #elif defined(OS_MACOSX) |
73 | 75 |
74 bool PpapiWebKitPlatformSupportImpl::SandboxSupport::loadFont( | 76 bool PpapiWebKitPlatformSupportImpl::SandboxSupport::loadFont( |
75 NSFont* src_font, | 77 NSFont* src_font, |
76 CGFontRef* out, | 78 CGFontRef* out, |
77 uint32_t* font_id) { | 79 uint32_t* font_id) { |
78 // TODO(brettw) this should do the something similar to what | 80 // TODO(brettw) this should do the something similar to what |
79 // RendererWebKitClientImpl does and request that the browser load the font. | 81 // RendererWebKitClientImpl does and request that the browser load the font. |
80 NOTIMPLEMENTED(); | 82 NOTIMPLEMENTED(); |
81 return false; | 83 return false; |
82 } | 84 } |
83 | 85 |
84 #elif defined(OS_POSIX) | 86 #elif defined(OS_POSIX) |
85 | 87 |
86 WebString | 88 void |
87 PpapiWebKitPlatformSupportImpl::SandboxSupport::getFontFamilyForCharacters( | 89 PpapiWebKitPlatformSupportImpl::SandboxSupport::getFontFamilyForCharacters( |
88 const WebUChar* characters, | 90 const WebUChar* characters, |
89 size_t num_characters, | 91 size_t num_characters, |
90 const char* preferred_locale) { | 92 const char* preferred_locale, |
| 93 WebKit::WebFontFamily* family) { |
91 base::AutoLock lock(unicode_font_families_mutex_); | 94 base::AutoLock lock(unicode_font_families_mutex_); |
92 const string16 key(characters, num_characters); | 95 const string16 key(characters, num_characters); |
93 const std::map<string16, std::string>::const_iterator iter = | 96 const std::map<string16, WebKit::WebFontFamily>::const_iterator iter = |
94 unicode_font_families_.find(key); | 97 unicode_font_families_.find(key); |
95 if (iter != unicode_font_families_.end()) | 98 if (iter != unicode_font_families_.end()) { |
96 return WebString::fromUTF8(iter->second); | 99 family->name = iter->second.name; |
| 100 family->isBold = iter->second.isBold; |
| 101 family->isItalic = iter->second.isItalic; |
| 102 return; |
| 103 } |
97 | 104 |
98 const std::string family_name = content::GetFontFamilyForCharacters( | 105 content::GetFontFamilyForCharacters( |
99 characters, | 106 characters, |
100 num_characters, | 107 num_characters, |
101 preferred_locale); | 108 preferred_locale, |
102 unicode_font_families_.insert(make_pair(key, family_name)); | 109 family); |
103 return WebString::fromUTF8(family_name); | 110 unicode_font_families_.insert(make_pair(key, *family)); |
104 } | 111 } |
105 | 112 |
106 void PpapiWebKitPlatformSupportImpl::SandboxSupport::getRenderStyleForStrike( | 113 void PpapiWebKitPlatformSupportImpl::SandboxSupport::getRenderStyleForStrike( |
107 const char* family, int sizeAndStyle, WebKit::WebFontRenderStyle* out) { | 114 const char* family, int sizeAndStyle, WebKit::WebFontRenderStyle* out) { |
108 content::GetRenderStyleForStrike(family, sizeAndStyle, out); | 115 content::GetRenderStyleForStrike(family, sizeAndStyle, out); |
109 } | 116 } |
110 | 117 |
111 #endif | 118 #endif |
112 | 119 |
113 PpapiWebKitPlatformSupportImpl::PpapiWebKitPlatformSupportImpl() | 120 PpapiWebKitPlatformSupportImpl::PpapiWebKitPlatformSupportImpl() |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
241 } | 248 } |
242 | 249 |
243 WebKit::WebSerializedScriptValue | 250 WebKit::WebSerializedScriptValue |
244 PpapiWebKitPlatformSupportImpl::injectIDBKeyIntoSerializedValue( | 251 PpapiWebKitPlatformSupportImpl::injectIDBKeyIntoSerializedValue( |
245 const WebKit::WebIDBKey& key, | 252 const WebKit::WebIDBKey& key, |
246 const WebKit::WebSerializedScriptValue& value, | 253 const WebKit::WebSerializedScriptValue& value, |
247 const WebKit::WebString& keyPath) { | 254 const WebKit::WebString& keyPath) { |
248 NOTREACHED(); | 255 NOTREACHED(); |
249 return WebKit::WebSerializedScriptValue(); | 256 return WebKit::WebSerializedScriptValue(); |
250 } | 257 } |
OLD | NEW |