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 #ifndef CONTENT_COMMON_FONT_LIST_H_ | 5 #ifndef CONTENT_COMMON_FONT_LIST_H_ |
6 #define CONTENT_COMMON_FONT_LIST_H_ | 6 #define CONTENT_COMMON_FONT_LIST_H_ |
7 | 7 |
8 #include "base/memory/scoped_ptr.h" | 8 #include "base/memory/scoped_ptr.h" |
9 | 9 |
10 namespace base { | 10 namespace base { |
11 class ListValue; | 11 class ListValue; |
12 } | 12 } |
13 | 13 |
14 namespace content { | 14 namespace content { |
15 | 15 |
| 16 // Getting the list of fonts on the system is non-threadsafe on Linux for |
| 17 // versions of Pango predating 2013. This sequence token can be used to enforce |
| 18 // serial execution of get font list tasks. |
| 19 extern const char kFontListSequenceToken[]; |
| 20 |
16 // Retrieves the fonts available on the current platform and returns them. | 21 // Retrieves the fonts available on the current platform and returns them. |
17 // The caller will own the returned pointer. Each entry will be a list of | 22 // The caller will own the returned pointer. Each entry will be a list of |
18 // two strings, the first being the font family, and the second being the | 23 // two strings, the first being the font family, and the second being the |
19 // localized name. | 24 // localized name. |
20 // | 25 // |
21 // This function is potentially slow (the system may do a bunch of I/O) so be | 26 // This function is potentially slow (the system may do a bunch of I/O) so be |
22 // sure not to call this on a time-critical thread like the UI or I/O threads. | 27 // sure not to call this on a time-critical thread like the UI or I/O threads. |
23 // | 28 // |
| 29 // Since getting the fonts is not threadsafe on Linux, use |
| 30 // |kFontListSequenceToken| to prevent race conditions. |
| 31 // |
24 // Most callers will want to use the GetFontListAsync function in | 32 // Most callers will want to use the GetFontListAsync function in |
25 // content/browser/font_list_async.h which does an asynchronous call. | 33 // content/browser/font_list_async.h which does an asynchronous call. |
26 scoped_ptr<base::ListValue> GetFontList_SlowBlocking(); | 34 scoped_ptr<base::ListValue> GetFontList_SlowBlocking(); |
27 | 35 |
28 } // namespace content | 36 } // namespace content |
29 | 37 |
30 #endif // CONTENT_COMMON_FONT_LIST_H_ | 38 #endif // CONTENT_COMMON_FONT_LIST_H_ |
OLD | NEW |