Added patch to create view with created page group with identifier.
[framework/web/webkit-efl.git] / Source / WTF / wtf / Platform.h
1 /*
2  * Copyright (C) 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
3  * Copyright (C) 2007-2009 Torch Mobile, Inc.
4  * Copyright (C) 2010, 2011 Research In Motion Limited. All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice, this list of conditions and the following disclaimer.
11  * 2. Redistributions in binary form must reproduce the above copyright
12  *    notice, this list of conditions and the following disclaimer in the
13  *    documentation and/or other materials provided with the distribution.
14  *
15  * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
16  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
18  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
19  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
20  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
21  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
22  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
23  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
25  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27
28 #ifndef WTF_Platform_h
29 #define WTF_Platform_h
30
31 /* Include compiler specific macros */
32 #include <wtf/Compiler.h>
33
34 /* ==== PLATFORM handles OS, operating environment, graphics API, and
35    CPU. This macro will be phased out in favor of platform adaptation
36    macros, policy decision macros, and top-level port definitions. ==== */
37 #define PLATFORM(WTF_FEATURE) (defined WTF_PLATFORM_##WTF_FEATURE  && WTF_PLATFORM_##WTF_FEATURE)
38
39
40 /* ==== Platform adaptation macros: these describe properties of the target environment. ==== */
41
42 /* CPU() - the target CPU architecture */
43 #define CPU(WTF_FEATURE) (defined WTF_CPU_##WTF_FEATURE  && WTF_CPU_##WTF_FEATURE)
44 /* HAVE() - specific system features (headers, functions or similar) that are present or not */
45 #define HAVE(WTF_FEATURE) (defined HAVE_##WTF_FEATURE  && HAVE_##WTF_FEATURE)
46 /* OS() - underlying operating system; only to be used for mandated low-level services like 
47    virtual memory, not to choose a GUI toolkit */
48 #define OS(WTF_FEATURE) (defined WTF_OS_##WTF_FEATURE  && WTF_OS_##WTF_FEATURE)
49
50
51 /* ==== Policy decision macros: these define policy choices for a particular port. ==== */
52
53 /* USE() - use a particular third-party library or optional OS service */
54 #define USE(WTF_FEATURE) (defined WTF_USE_##WTF_FEATURE  && WTF_USE_##WTF_FEATURE)
55 /* ENABLE() - turn on a specific feature of WebKit */
56 #define ENABLE(WTF_FEATURE) (defined ENABLE_##WTF_FEATURE  && ENABLE_##WTF_FEATURE)
57
58 /* ==== CPU() - the target CPU architecture ==== */
59
60 /* This also defines CPU(BIG_ENDIAN) or CPU(MIDDLE_ENDIAN) or neither, as appropriate. */
61
62 /* CPU(ALPHA) - DEC Alpha */
63 #if defined(__alpha__)
64 #define WTF_CPU_ALPHA 1
65 #endif
66
67 /* CPU(IA64) - Itanium / IA-64 */
68 #if defined(__ia64__)
69 #define WTF_CPU_IA64 1
70 /* 32-bit mode on Itanium */
71 #if !defined(__LP64__)
72 #define WTF_CPU_IA64_32 1
73 #endif
74 #endif
75
76 /* CPU(MIPS) - MIPS 32-bit */
77 /* Note: Only O32 ABI is tested, so we enable it for O32 ABI for now.  */
78 #if (defined(mips) || defined(__mips__) || defined(MIPS) || defined(_MIPS_)) \
79     && defined(_ABIO32)
80 #define WTF_CPU_MIPS 1
81 #if defined(__MIPSEB__)
82 #define WTF_CPU_BIG_ENDIAN 1
83 #endif
84 #define WTF_MIPS_PIC (defined __PIC__)
85 #define WTF_MIPS_ARCH __mips
86 #define WTF_MIPS_ISA(v) (defined WTF_MIPS_ARCH && WTF_MIPS_ARCH == v)
87 #define WTF_MIPS_ISA_AT_LEAST(v) (defined WTF_MIPS_ARCH && WTF_MIPS_ARCH >= v)
88 #define WTF_MIPS_ARCH_REV __mips_isa_rev
89 #define WTF_MIPS_ISA_REV(v) (defined WTF_MIPS_ARCH_REV && WTF_MIPS_ARCH_REV == v)
90 #define WTF_MIPS_DOUBLE_FLOAT (defined __mips_hard_float && !defined __mips_single_float)
91 #define WTF_MIPS_FP64 (defined __mips_fpr && __mips_fpr == 64)
92 /* MIPS requires allocators to use aligned memory */
93 #define WTF_USE_ARENA_ALLOC_ALIGNMENT_INTEGER 1
94 #endif /* MIPS */
95
96 /* CPU(PPC) - PowerPC 32-bit */
97 #if   defined(__ppc__)     \
98     || defined(__PPC__)     \
99     || defined(__powerpc__) \
100     || defined(__powerpc)   \
101     || defined(__POWERPC__) \
102     || defined(_M_PPC)      \
103     || defined(__PPC)
104 #define WTF_CPU_PPC 1
105 #define WTF_CPU_BIG_ENDIAN 1
106 #endif
107
108 /* CPU(PPC64) - PowerPC 64-bit */
109 #if   defined(__ppc64__) \
110     || defined(__PPC64__)
111 #define WTF_CPU_PPC64 1
112 #define WTF_CPU_BIG_ENDIAN 1
113 #endif
114
115 /* CPU(SH4) - SuperH SH-4 */
116 #if defined(__SH4__)
117 #define WTF_CPU_SH4 1
118 #endif
119
120 /* CPU(SPARC32) - SPARC 32-bit */
121 #if defined(__sparc) && !defined(__arch64__) || defined(__sparcv8)
122 #define WTF_CPU_SPARC32 1
123 #define WTF_CPU_BIG_ENDIAN 1
124 #endif
125
126 /* CPU(SPARC64) - SPARC 64-bit */
127 #if defined(__sparc__) && defined(__arch64__) || defined (__sparcv9)
128 #define WTF_CPU_SPARC64 1
129 #define WTF_CPU_BIG_ENDIAN 1
130 #endif
131
132 /* CPU(SPARC) - any SPARC, true for CPU(SPARC32) and CPU(SPARC64) */
133 #if CPU(SPARC32) || CPU(SPARC64)
134 #define WTF_CPU_SPARC 1
135 #endif
136
137 /* CPU(S390X) - S390 64-bit */
138 #if defined(__s390x__)
139 #define WTF_CPU_S390X 1
140 #define WTF_CPU_BIG_ENDIAN 1
141 #endif
142
143 /* CPU(S390) - S390 32-bit */
144 #if defined(__s390__)
145 #define WTF_CPU_S390 1
146 #define WTF_CPU_BIG_ENDIAN 1
147 #endif
148
149 /* CPU(X86) - i386 / x86 32-bit */
150 #if   defined(__i386__) \
151     || defined(i386)     \
152     || defined(_M_IX86)  \
153     || defined(_X86_)    \
154     || defined(__THW_INTEL)
155 #define WTF_CPU_X86 1
156 #endif
157
158 /* CPU(X86_64) - AMD64 / Intel64 / x86_64 64-bit */
159 #if   defined(__x86_64__) \
160     || defined(_M_X64)
161 #define WTF_CPU_X86_64 1
162 #endif
163
164 /* CPU(ARM) - ARM, any version*/
165 #if   defined(arm) \
166     || defined(__arm__) \
167     || defined(ARM) \
168     || defined(_ARM_)
169 #define WTF_CPU_ARM 1
170
171 #if defined(__ARMEB__) || (COMPILER(RVCT) && defined(__BIG_ENDIAN))
172 #define WTF_CPU_BIG_ENDIAN 1
173
174 #elif !defined(__ARM_EABI__) \
175     && !defined(__EABI__) \
176     && !defined(__VFP_FP__) \
177     && !defined(_WIN32_WCE) \
178     && !defined(ANDROID)
179 #define WTF_CPU_MIDDLE_ENDIAN 1
180
181 #endif
182
183 #define WTF_ARM_ARCH_AT_LEAST(N) (CPU(ARM) && WTF_ARM_ARCH_VERSION >= N)
184
185 /* Set WTF_ARM_ARCH_VERSION */
186 #if   defined(__ARM_ARCH_4__) \
187     || defined(__ARM_ARCH_4T__) \
188     || defined(__MARM_ARMV4__) \
189     || defined(_ARMV4I_)
190 #define WTF_ARM_ARCH_VERSION 4
191
192 #elif defined(__ARM_ARCH_5__) \
193     || defined(__ARM_ARCH_5T__) \
194     || defined(__MARM_ARMV5__)
195 #define WTF_ARM_ARCH_VERSION 5
196
197 #elif defined(__ARM_ARCH_5E__) \
198     || defined(__ARM_ARCH_5TE__) \
199     || defined(__ARM_ARCH_5TEJ__)
200 #define WTF_ARM_ARCH_VERSION 5
201 /*ARMv5TE requires allocators to use aligned memory*/
202 #define WTF_USE_ARENA_ALLOC_ALIGNMENT_INTEGER 1
203
204 #elif defined(__ARM_ARCH_6__) \
205     || defined(__ARM_ARCH_6J__) \
206     || defined(__ARM_ARCH_6K__) \
207     || defined(__ARM_ARCH_6Z__) \
208     || defined(__ARM_ARCH_6ZK__) \
209     || defined(__ARM_ARCH_6T2__) \
210     || defined(__ARMV6__)
211 #define WTF_ARM_ARCH_VERSION 6
212
213 #elif defined(__ARM_ARCH_7A__) \
214     || defined(__ARM_ARCH_7R__)
215 #define WTF_ARM_ARCH_VERSION 7
216
217 /* RVCT sets _TARGET_ARCH_ARM */
218 #elif defined(__TARGET_ARCH_ARM)
219 #define WTF_ARM_ARCH_VERSION __TARGET_ARCH_ARM
220
221 #if defined(__TARGET_ARCH_5E) \
222     || defined(__TARGET_ARCH_5TE) \
223     || defined(__TARGET_ARCH_5TEJ)
224 /*ARMv5TE requires allocators to use aligned memory*/
225 #define WTF_USE_ARENA_ALLOC_ALIGNMENT_INTEGER 1
226 #endif
227
228 #else
229 #define WTF_ARM_ARCH_VERSION 0
230
231 #endif
232
233 /* Set WTF_THUMB_ARCH_VERSION */
234 #if   defined(__ARM_ARCH_4T__)
235 #define WTF_THUMB_ARCH_VERSION 1
236
237 #elif defined(__ARM_ARCH_5T__) \
238     || defined(__ARM_ARCH_5TE__) \
239     || defined(__ARM_ARCH_5TEJ__)
240 #define WTF_THUMB_ARCH_VERSION 2
241
242 #elif defined(__ARM_ARCH_6J__) \
243     || defined(__ARM_ARCH_6K__) \
244     || defined(__ARM_ARCH_6Z__) \
245     || defined(__ARM_ARCH_6ZK__) \
246     || defined(__ARM_ARCH_6M__)
247 #define WTF_THUMB_ARCH_VERSION 3
248
249 #elif defined(__ARM_ARCH_6T2__) \
250     || defined(__ARM_ARCH_7__) \
251     || defined(__ARM_ARCH_7A__) \
252     || defined(__ARM_ARCH_7R__) \
253     || defined(__ARM_ARCH_7M__)
254 #define WTF_THUMB_ARCH_VERSION 4
255
256 /* RVCT sets __TARGET_ARCH_THUMB */
257 #elif defined(__TARGET_ARCH_THUMB)
258 #define WTF_THUMB_ARCH_VERSION __TARGET_ARCH_THUMB
259
260 #else
261 #define WTF_THUMB_ARCH_VERSION 0
262 #endif
263
264
265 /* CPU(ARMV5_OR_LOWER) - ARM instruction set v5 or earlier */
266 /* On ARMv5 and below the natural alignment is required. 
267    And there are some other differences for v5 or earlier. */
268 #if !defined(ARMV5_OR_LOWER) && !WTF_ARM_ARCH_AT_LEAST(6)
269 #define WTF_CPU_ARMV5_OR_LOWER 1
270 #endif
271
272
273 /* CPU(ARM_TRADITIONAL) - Thumb2 is not available, only traditional ARM (v4 or greater) */
274 /* CPU(ARM_THUMB2) - Thumb2 instruction set is available */
275 /* Only one of these will be defined. */
276 #if !defined(WTF_CPU_ARM_TRADITIONAL) && !defined(WTF_CPU_ARM_THUMB2)
277 #  if defined(thumb2) || defined(__thumb2__) \
278     || ((defined(__thumb) || defined(__thumb__)) && WTF_THUMB_ARCH_VERSION == 4)
279 #    define WTF_CPU_ARM_TRADITIONAL 0
280 #    define WTF_CPU_ARM_THUMB2 1
281 #  elif WTF_ARM_ARCH_AT_LEAST(4)
282 #    define WTF_CPU_ARM_TRADITIONAL 1
283 #    define WTF_CPU_ARM_THUMB2 0
284 #  else
285 #    error "Not supported ARM architecture"
286 #  endif
287 #elif CPU(ARM_TRADITIONAL) && CPU(ARM_THUMB2) /* Sanity Check */
288 #  error "Cannot use both of WTF_CPU_ARM_TRADITIONAL and WTF_CPU_ARM_THUMB2 platforms"
289 #endif /* !defined(WTF_CPU_ARM_TRADITIONAL) && !defined(WTF_CPU_ARM_THUMB2) */
290
291 #if defined(__ARM_NEON__) && !defined(WTF_CPU_ARM_NEON)
292 #define WTF_CPU_ARM_NEON 1
293 #endif
294
295 #if CPU(ARM_NEON) && (!COMPILER(GCC) || GCC_VERSION_AT_LEAST(4, 7, 0))
296 // All NEON intrinsics usage can be disabled by this macro.
297 #define HAVE_ARM_NEON_INTRINSICS 1
298 #endif
299
300 #endif /* ARM */
301
302 #if CPU(ARM) || CPU(MIPS) || CPU(SH4) || CPU(SPARC)
303 #define WTF_CPU_NEEDS_ALIGNED_ACCESS 1
304 #endif
305
306 /* Samsung Platforms */
307 #if OS(TIZEN)
308
309 /* API extensions */
310 #define ENABLE_TIZEN_EFL_EXT_API 1 /* Gyuyoung Kim(gyuyoung.kim@samsung.com) : Add new APIs for EFL Port */
311 #define ENABLE_TIZEN_JS_EXT_API 1 /* Gyuyoung Kim(gyuyoung.kim@samsung.com): Add new APIs for JS */
312 #define ENABLE_TIZEN_JS_PERMISSION_CHECKER 1 /* Bartlomiej Grzelewski : */
313 #define ENABLE_TIZEN_ORIENTATION_EVENTS ENABLE_ORIENTATION_EVENTS /* Ryuan Choi(ryuan.choi@samsung.com) : Implement orientation events for wk/tizen and wk2/tizen */
314 #define ENABLE_TIZEN_REQUEST_CANCEL 1 /* Bartlomiej Grzelewski, Grzegorz Czajkowski(g.czajkowski@samsung.com) : allows to cancel request,
315                                          additionaly onerror callback is called for this resource. */
316
317 /* EWK patches */
318 #if ENABLE(DEVICE_ORIENTATION)
319 #define ENABLE_TIZEN_DEVICE_ORIENTATION 1 /* Ryuan Choi(ryuan.choi@samsung.com) : feature for device orientation */
320 #endif
321 #define ENABLE_TIZEN_ISF_PORT 1 /* Michal Pakula(m.pakula@samsung.com) : feature for integrating the EditorClient Port with TIZEN2.0 ISF */
322 #define ENABLE_TIZEN_SHOW_IME_ON_FOCUS_IN 1 /* Piotr Roguski(p.roguski@samsung.com)  forcing showing IME when WebKit recievs focus and focused DOM node should use input method */
323 #define ENABLE_TIZEN_TEXT_SELECTION 1 /* Eunmi Lee(eunmi15.lee@samsung.com) : */
324 #define ENABLE_TIZEN_SELECT_TEXT_FROM_RECTANGLE 1 /* Piotr Roguski(p.roguski@samsung.com) : selecting text from rectangle for eBook reader */
325 #define ENABLE_TIZEN_PARAGRAPH_SELECTION 1 /* Grzegorz Czajkowski(g.czajkowski@samsung.com), Kamil Blank(k.blank@samsung.com) : Paragraph selection API, it doesn't draw anything on WebKit's context just returns needed information */
326 #define ENABLE_TIZEN_PASSWORD_MANAGER 1 /* Grzegorz Czajkowski(g.czajkowski@samsung.com) : */
327 #define ENABLE_TIZEN_FIRST_PAINT_NOTI 1 /* JungJik Lee(jungjik.lee@samsung.com) : */
328 #define ENABLE_TIZEN_EDITOR_COMMAND 1 /* Taesik Cho(taesik.cho@samsung.com) : feature for supporting Composer using webkit*/
329 #define ENABLE_TIZEN_WEBKIT_PASTEBOARD 1 /* Michal Pakula(m.pakula@samsung.com), Eunmi Lee(eunmi15.lee@samsung.com) : Pasteboard implementation for WK1 and WK2. */
330 #define ENABLE_TIZEN_CSS_OVERFLOW_SCROLL 1 /* Jaehun Lim(ljaehun.lim@samsung.com) : div scroll support for WRT */
331 #define ENABLE_TIZEN_MEMORY_CONTROLLER 1 /* Krzysztof Czech(k.czech@samsung.com) : */
332 #define ENABLE_TIZEN_SUPPORT_RSS_LINK_PARSING 1 /* Jaesick Chang(jaesik.chang@samsung.com), Ryuan Choi(ryuan.choi@samsung.com) (WebKit1), KueHwan Sihn, Eunmi Lee(eunmi15.lee@samsung.com) (WebKit2): RSS Link Parsing patches */
333 #define ENABLE_TIZEN_EDITABLE_LINK_ACTIVE_SET 1 /* Who is owner ? */
334 #define ENABLE_TIZEN_TEXT_ENCODING 1 /* Łukasz Ślachciak(l.slachciak@samsung.com) : */
335 #define ENABLE_TIZEN_DROPDOWN_SUPPORT 1 /* Gyuyoung Kim(gyuyoung.kim@samsung.com) : */
336 #define ENABLE_TIZEN_WEAK_ZOOM_VIEWPORT 1 /* JungJik Lee(jungjik.lee@samsung.com) */
337 #define ENABLE_TIZEN_TEXT_CARET_HANDLING 1 /* Michal Pakula(m.pakula@samsung.com) : enables two methods for getting and setting text caret position in editable fields */
338 #define ENABLE_TIZEN_TEXT_CARET_HANDLING_WK2 1 /* Piotr Roguski(p.roguski@samsung.com) : enables two methods for getting and setting text caret position in editable fields */
339 #define ENABLE_TIZEN_ENLARGE_CARET_WIDTH 1 /* Taesik Cho : enlarge default caret width(size) - Email team is demanding this function. When composing, it is difficult to know where caret is.*/
340 #define ENABLE_TIZEN_SUPPORT_INNERFRAME_FOR_HIT_TEST 1 /* Who is owner ? */
341 #define ENABLE_TIZEN_SCROLL_SCALED_POS_GET 1 /* Kamil Blank(k.blank@samsung.com) : */
342 #define ENABLE_TIZEN_CUSTOM_HEADERS 1 /* Who is owner ? */
343 #define ENABLE_TIZEN_CSS_FIXED_AS_ABSOLUTE 1 /* Kamil Blank(k.blank@samsung.com) : treat Fixed elements as Absolute ones */
344 #define ENABLE_TIZEN_WINDOW_CLOSE 1 /* Who is owner ? : send window,close event when JS window.close() gets called (by WebRuntime) */
345 #define ENABLE_TIZEN_PRE_RENDERING_ENABLE 1 /* Krzysztof Czech(k.czech@samsung.com), JungJik Lee(jungjik.lee@samsung.com) :enable pre-rendering as a whole*/
346 #define ENABLE_TIZEN_NO_TILE_CREATION_OVER_THE_LIMIT 1 /* JungJik Lee(jungjik.lee@samsung.com) : Prevent tile creation while zooming */
347 #define ENABLE_TIZEN_IMAGE_PASTE 1 /* Michal Pakula(m.pakula@samsung.com) : feature allowing paste images from file system into content editable via data uri scheme */
348 #define ENABLE_TIZEN_VIEW_ACTIVE_SET 1 /* KwangHyuk Kim(hyuki.kim@samsung.com) : Enables calling ewk_view_active_set in the _ewk_view_smart_show/hide */
349 #define ENABLE_TIZEN_TILED_GLOBAL_CACHE_MANAGEMENT 1 /* Tomasz Morawski(t.morawski@samsung.com) : Allows to controll size of allocated memory by all tailed view caches. */
350 #define ENABLE_TIZEN_TILED_CACHE_NEWIMP 1 /* JungJik Lee(jungjik.lee@samsung.com) : Tiled unused cache new implementation */
351 #define ENABLE_TIZEN_CONTEXT_MENU 1 /* Gyuyoung Kim(gyuyoung.kim@samsung.com) : Support Context Menu for WebKit1 EFL port. Current WebKit mainline doesn't support ENABLE_CONTEXT_MENU for EFL port */
352 #define ENABLE_TIZEN_BG_RECT_SUPPORT 1 /* JungJik Lee(jungjik.lee@samsung.com) : To support background rectangle for the ewk_view */
353 #define ENABLE_TIZEN_HIT_TEST 1 /* Changhyup Jwa(ch.jwa@samsung.com) : Patch for TIZEN hit test. Kangil Han(kangil.han@samsung.com) : Add attribute hash, image buffer and tag name to Ewk_Hit_Test data structure on hit test. */
354 #define ENABLE_TIZEN_NONEMPTY_LAYOUT 1 /* Ryuan Choi(ryuan.choi@samsung.com) : Controls non empty layout */
355 #define ENABLE_TIZEN_TILE_SIZE_GET 1 /* JungJik Lee(jungjik.lee@samsung.com) : Patch to support changable tile size */
356 #define ENABLE_TIZEN_ADD_DEFAULT_CACHE_SIZE_DEFINITION 1 /* Tomasz : add definition for default tile cache size */
357 #define ENABLE_TIZEN_DEFAULT_TILE_SIZE 1 /* JungJik Lee(jungjik.lee@samsung.com) : Configure default tile size */
358 #define ENABLE_TIZEN_TILE_MATRIX_LIST 1 /* KwangHyuk Kim(hyuki.kim@samsung.com) : Tile matrix for each different zoom level */
359 #define ENABLE_TIZEN_ZOOM_CHECK_BEFORE_PAINTING 1 /* JungJik Lee(jungjik.lee@samsung.com) : background color set for tiled view */
360 #define ENABLE_TIZEN_TILE_REUSE_ALREADY_CREATED 1 /* JungJik Lee(jungjik.lee@samsung.com) : To reuse tiles already created without free operation */
361 #define ENABLE_TIZEN_ICON_DATABASE 1 /* Nikhil Bansal(n.bansal@samsung.com) : To set the default iconDatabasePath for favicon */
362 #define ENABLE_TIZEN_ERROR_PAGE 1 /* Dongjae Kim(dongjae1.kim@samsung.com) : Not use webview's error page.*/
363 #define ENABLE_TIZEN_CREATE_FRAME_VIEW_ALWAYS 1 /* Kamil Blank(k.blank@samsung.com) Dongjae Kim(dongjae1.kim@samsung.com) : Create FrameView Always*/
364 #define ENABLE_TIZEN_FIX_EMAIL_ONE_TILE_DISPLAY 1 /* Jungjik Lee(jungjik.lee@samsung.com): Fixed email display only one tile area*/
365 #define ENABLE_TIZEN_CAIRO_USAGE_ON_DEMAND 0 /* KwangHyuk Kim(hyuki.kim@samsung.com) : Ewk_Tile doesn't keep cairo related field, This would be 0 for the time being */
366 #define ENABLE_TIZEN_REUSE_BIGGER_ZOOM_FIRST 1 /* JungJik Lee(jungjik.lee@samsung.com) : To keep tiles for smallest zoom level as long as possible */
367 #define ENABLE_TIZEN_TILE_ADD_PAINTED_STATE 1 /* Eunsol Park(eunsol47.park@samsung.com) : Add tile painted state */
368 #define ENABLE_TIZEN_PRE_RENDER_TILES_CREATED_AFTER_SCROLL 1 /* JungJik Lee(jungjik.lee@samsung.com) : patch to pre-render empty tiles created by selective render */
369 #define ENABLE_TIZEN_ADD_VIEW_CLEAR 1 /* Eunsol Park(eunsol47.park@samsung.com) : Patch to clear view when non empty layout*/
370 #define ENABLE_TIZEN_DBSPACE_PATH 1 /* Jaehun Lim(ljaehun.lim@samsung.com) : Set the TIZEN's default database directory */
371 #define ENABLE_TIZEN_POLICY_DECISION 1 /* Gyuyoung Kim(gyuyoung.kim@samsung.com) : decide policy for content download */
372 #define ENABLE_TIZEN_ENCODING_DETECTOR_TRUE 1 /* Ryuan Choi(ryuan.choi@samsung.com) : we want to use encoding detector as default */
373 #define ENABLE_TIZEN_FIX_MESH_TILE_ISSUE 1 /* JungJik Lee(jungjik.lee@samsung.com) : tile mesh issue fix */
374 #define ENABLE_TIZEN_WEAK_SCROLL 1 /* Kamil Blank(k.blank@samsung.com) : Weak scroll */
375 #define ENABLE_TIZEN_ORIGIN_DEL_FOR_APPCACHE 1 /* Donggwan Kim : Delete origin for ApplicationCache */
376 #define ENABLE_TIZEN_ORIGIN_DEL_FOR_WEBSTORAGE 1 /* Donggwan Kim : Delete origin for WebStorage */
377 #define ENABLE_TIZEN_REMOVE_ONE_REMAIN_TILE 1 /* JungJik Lee(jungjik.lee@samsung.com) : Remove warning on one tile remained */
378 #define ENABLE_TIZEN_DOM_TIMER_MIN_INTERVAL_SET 1 /* Gyuyoung Kim(gyuyoung.kim@samsung.com) : Set minimum interval for DOMTimer */
379 #define ENABLE_TIZEN_RECORDING_SURFACE 0 /* Hyeonji Kim(hyeonji.kim@samsung.com) : enable recording surface */
380 #define ENABLE_TIZEN_SKIP_MOVING_WHILE_WEAK_ZOOMING 1 /* JungJik Lee(jungjik.lee@samsung.com) : Skipping reposition of tiles while weak zooming */
381 #define ENABLE_TIZEN_SINGLE_BACKINGSTORE_ISSUE_WITH_ZOOM 1 /*Krzysztof Czech(k.czech@samsung.com): making sure x,y dimensions are not less the 0, prevents dirty rect's appearing */
382 #define ENABLE_TIZEN_PAGE_CACHE 1 /* DongJae KIM : Enable EFL Page Cache */
383 #define ENABLE_TIZEN_LOADING_STATE_CHECK 1  /* Sungman Kim(ssungmai.kim@samsung.com) :  Check loading state  */
384 #define ENABLE_TIZEN_CONTENTS_SET 1  /* Sungman Kim(ssungmai.kim@samsung.com) : Add  contents set api */
385 #define ENABLE_TIZEN_REMOVE_CHILD_AFTER_FRAME_INIT_FAIL 1 /* Sungman Kim(ssungmai.kim@samsung.com) : fixed crash issue occurred after subframe init fail */
386 #define ENABLE_TIZEN_VIEWPORT_POLICY 1 /* Gyuyoung Kim(gyuyoung.kim@samsung.com) : Adjust Tizen layout viewport policy */
387 #define ENABLE_TIZEN_TILE_BASECODE 1 /* JungJik Lee(jungjik.lee@samsung.com) : Tiled Backing Store Base Code */
388 #define ENABLE_TIZEN_WEAK_ZOOM_POSITION 1 /* JungJik Lee(jungjik.lee@samsung.com) : Make use of rounded zoom value in weak zoom and zoom over */
389 #define ENABLE_TIZEN_ON_LOADING_REQUESTED 1 /*Sungman Kim(ssungmai.kim@samsung.com) : Callback call for signal navigation_policy,decision,requested with navigation type*/
390 #define ENABLE_TIZEN_CACHE_CONTROL 1 /*Sungman Kim(ssungmai.kim@samsung.com) : Control cache enable or disable mode*/
391 /* ewk_frame_script_execute should return the string even even if the result is the object.
392      because the object can be converted to the string using toString function.
393      ex) When the result is DIV Element, it is converted "[object HTMLDivElement]" by toString function.
394  */
395 #define ENABLE_TIZEN_RETURN_OBJECT_RESULT_FROM_EXECUTE_SCRIPT 1 /* Jongseok Yang(js45.yang@samsung.com) */
396 #define ENABLE_TIZEN_REDUCES_REPAINTS_ON_ZOOM_SETTING 1 /* Krzysztof Czech(k.czech@samsung.com) : it reduces number of new repaints*/
397 #define ENABLE_TIZEN_BACKING_STORE_ROTATION_WITH_ZOOM_CHANGED_ISSUE 1 /* Krzysztof Czech(k.czech@samsung.com) : when zoom was less than one, repaint's values were wrong calculated*/
398 #define ENABLE_TIZEN_VIEWPORT_FAST_RENDERING 1 /* JungJik Lee(jungjik.lee@samsung.com) : the backing store renders only viewport area first so it looks fast */
399 #define ENABLE_TIZEN_CONTENTS_SIZE_SET_ON_FLUSH 1 /* Byeongha Cho(byeongha.cho@samsung.com)g : prevent loss of content size after backing store flush. */
400 #define ENABLE_TIZEN_JS_API_FIX 1 /* Michal Pakula(m.pakula@samsung.com) : fixes for JS API functions which allow them to pass TETware tests. */
401 #if ENABLE(SQL_DATABASE)
402 #define ENABLE_TIZEN_SQL_DATABASE 1 /* Jiyeon Kim(jiyeon0422.kim@samsung.com) : Enable Web SQL */
403 #endif
404
405 /* WebCore's patches */
406 #define ENABLE_TIZEN_SYSTEM_FONT 1 /* Ryuan Choi(ryuan.choi@samsung.com) : Bug fix, default width of input field is too big. */
407 #define ENABLE_TIZEN_THEME_STYLE_WORKAROUND 1 /* Ryuan Choi(ryuan.choi@samsung.com) : css of input should be flexible. workaround until trunk is upstreamed.  KyungTae Kim(ktf.kim@samsung.com) : Rename the macro to apply to buttons for flexible heights */
408 #define ENABLE_TIZEN_VIEWPORT_META_TAG 1 /* Gyuyoung Kim(gyuyoung.kim@samsung.com) : Support viewport meta tag */
409 #define ENABLE_TIZEN_VIEWPORT_ORIENTATION 1 /* Ryuan Choi(ryuan.choi@samsung.com) : implement viewport orientation */
410 #define ENABLE_TIZEN_YOUTUBE_HD 1 /* Jaehun Lim(ljaehun.lim@samsung.com) : */
411 #define ENABLE_TIZEN_FOCUS_RING 1 /* Gyuyoung Kim(gyuyoung.kim@samsung.com), Grzegorz Czajkowski(g.czajkowski@samsung.com): tizen specific focus ring and to fill an area of focus ring */
412 #define ENABLE_TIZEN_MEMORY_SQUEEZE 0 /* Sangseok Lim : to reduce memory footprint */
413 #define ENABLE_TIZEN_MEDIA_QUERY 1 /* Gyuyoung Kim(gyuyoung.kim@samsung.com) : to support resolution spec in media query*/
414 #define ENABLE_TIZEN_CERTIFICATE_HANDLING 1 /* Krzysztof Czech(k.czech@samsung.com) : support for certificate callback function set by UI */ /* DongJae KIM : Enable Patch*/
415 #define ENABLE_TIZEN_CSS_FIXED_FAST_PATH 0 /* Kamil Blank(k.blank@samsung.com) : to support CSS Fixed elements, checked only with disabled rendering suspendion*/
416 #define ENABLE_TIZEN_ELEMENT_CREATED_BY_PARSER_INFO_STORE 1 /* Who is owner ? : support storing info about element's creation: from parser or JS */
417 #define ENABLE_TIZEN_INSTALL_CONTENT 1 /* Gyuyoung Kim(gyuyoung.kim@samsung.com) : Install image to file manager */
418 #define ENABLE_TIZEN_COPY_IMAGE_LOCATION 0 /* Grzegorz Czajkowski(g.czajkowski@samsung.com) : TO REMOVE, committed in r104924, keeping for API and ABI compatibility */
419 #define ENABLE_TIZEN_DOWNLOAD_LINK_FILTER 1 /* Jaehun Lim(ljaehun.lim@samsung.com) : show download context menus for only http(s) and ftp(s) link */
420 #define ENABLE_TIZEN_EDITABLE_COPY_IMAGE 1 /* Michal Pakula(m.pakula@samsung.com) : added context menu items which allows to handle images in richly editable fields */
421 #define ENABLE_TIZEN_ROOT_INLINE_BOX_SELECTION_TOP 1 /* Kamil Blank(k.blank@samsung.com) : Fix for too high selection on bbc.co.uk, https://bugs.webkit.org/show_bug.cgi?id=65307 */
422 #define ENABLE_TIZEN_PREVENT_CRASH_OF_TOUCH_EVENTS 1 /* Who is owner ? : https://bugs.webkit.org/show_bug.cgi?id=40163 */
423 #define ENABLE_TIZEN_DECODER_AUTODETECTION_FAIL_DEFENCE 1 /* Jaesick Chang(jaesik.chang@samsung.com) : */
424 #define ENABLE_TIZEN_PASSWORD_SHOW_PATCH 1 /* Michal Pakula(m.pakula@samsung.com) : patch that enables showing last entered character in password input field */
425 #define ENABLE_TIZEN_FIX_NULL_DOCUMENT 1 /* Krzysztof Czech(k.czech@samsung.com) : Patch that prevents using document's null pointer */
426 #define ENABLE_TIZEN_INPUT_TAG_SUPPORT 1 /* Eunjoong Jeon : Support input tag type - 1. Hint the input tag type to apps 2. Define appearence of each input tag type */
427 #define ENABLE_TIZEN_INPUT_TAG_EXTENSION 1 /* Yuni Jeong(yhnet.jung@samsung.com) : For setting & getting focused input element value */
428 #define ENABLE_TIZEN_INPUT_COLOR_PICKER 1 /* KwangYong Choi(ky0.choi@samsung.com) : Interface for input color picker on Tizen */
429 #define ENABLE_TIZEN_DATALIST_ELEMENT 1 /* KwangYong Choi(ky0.choi@samsung.com) : Support datalist feature of text input field */
430 #define ENABLE_TIZEN_CONTEXT_MENU_TEMPORARY_FIX 1 /* Michal Pakula(m.pakula@samsung.com) : Temporary hack to prevent from crash when calling context menu on editable fiedld */
431 #define ENABLE_TIZEN_FORM_SUBMIT_SUPPORT 1 /* Gyuyoung Kim(gyuyoung.kim@samsung.com) : fix a problem when form submits data to specific window */
432 #define ENABLE_TIZEN_SCROLL_ADDING_FIX 1 /* Kamil Blank(k.blank@samsung.com) : Fix for _ewk_view_scroll_add (pending repaints were wrongly updated) */
433 #define ENABLE_TIZEN_CONTEXT_MENU_SELECT 1 /* Michal Pakula(m.pakula@samsung.com) : Adds Select All and Select options to context menu */
434 #define ENABLE_TIZEN_MEDIA_CONTROL_USER_AGENT_SHEET 1 /* Gyuyoung Kim(gyuyoung.kim@samsung.com) Add media control ui sheet for TIZEN */
435
436 #define ENABLE_TIZEN_DAILY_UPVERSIONING 1 /* Krzysztof Czech(k.czech@samsung.com) : Used for fixing building errors while doing daily upversioning, should be deleted before merging to master*/
437
438 #define ENABLE_TIZEN_GRAPHICSCONTEXT_COLLECT_REGION 1 /*KyungTae Kim(ktf.kim@samsung.com) : Collect clip regions in GraphicsContext for clipping in endTransparencyLayer */
439 #define ENABLE_TIZEN_FONTCACHE_DEPRECATED 1 /* JungJik Lee(jungjik.lee@samsung.com) : Deprecate FontCachePurgePreventer Temporarily*/
440 #define ENABLE_TIZEN_SEARCH_FIELD_STYLE 1 /* Jaehun Lim(ljaehun.lim@samsung.com) : making search fields style-able */
441 #define ENABLE_TIZEN_RELOAD_CACHE_POLICY_PATCH 1 /*Sungman Kim(ssungmai.kim@samsung.com) : Set cache policy of initialRequest to ReloadIgnoringCacheData from browser reload*/
442 #define ENABLE_TIZEN_WEBGL_ANGLE_INTEGRATION 0 /*Shanmuga Pandi : For ANGLE Integration for WEBGL*/
443 #define ENABLE_TIZEN_FIX_SHARED_BUFFER_EFL 1 /* Mariusz Grzegorczyk : Imported from [EFL] Simplify SharedBuffer::createWithContentsOfFile() implementation - https://bugs.webkit.org/show_bug.cgi?id=89655 */
444
445 #define ENABLE_TIZEN_RUNLOOP_WAKEUP_ERROR_WORKAROUND 1 /* Seokju Kwon : Fix S1-6807 issue temporarily */
446
447 #if ENABLE(NOTIFICATIONS)
448 #define ENABLE_TIZEN_NOTIFICATION 1 /* Kihong Kwon(kihong.kwon@samsung.com) : Temp patch for notification score in the html5test.com */
449 #endif
450
451 #define ENABLE_TIZEN_OFFSET_UPDATE 1 /* Tomasz Morawski(t.morawski@samsung.com) : fix for scroll issue when slow path is used */
452 #define ENABLE_TIZEN_ADJUST_PATTERN_MATRIX 1 /*KyungTae Kim(ktf.kim@samsung.com) : Adjust pattern matrix of repeated images to align to dest pixel grid for fixing seam issues */
453
454 #if ENABLE(VIBRATION)
455 #define ENABLE_TIZEN_VIBRATION 1 /* Kihong Kwon(kihong.kwon@samsung.com) : Support Vibration API */
456 #endif
457
458 #if ENABLE(INDEXED_DATABASE)
459 #define ENABLE_TIZEN_INDEXED_DATABASE 1 /* DongGwan Kim(donggwan.kim@samsung.com) : Support IndexedDB for JS bindings */
460 #endif
461
462 #if ENABLE(OFFLINE_WEB_APPLICATIONS)
463 #define ENABLE_TIZEN_APPLICATION_CACHE 1 /* Seonae Kim(sunaeluv.kim@samsung.com) : Support Application Cache */
464 #endif
465
466 #define ENABLE_TIZEN_WEB_STORAGE 1 /* Seonae Kim(sunaeluv.kim@samsung.com) : Support Web Storage */
467
468 #if ENABLE(MEDIA_STREAM)
469 #define ENABLE_TIZEN_MEDIA_STREAM 1 /* DongGwan Kim(donggwan.kim@samsung.com) : Support Media Stream */
470 #endif
471
472 #define ENABLE_TIZEN_ATLAS_IMAGE_BUG_FIX 1 /*KyungTae Kim(ktf.kim@samsung.com) : For fixing atlas image bug(when draw part of image, surrounding pixels were shown), using subSurface when draw part of image*/
473
474 #define ENABLE_TIZEN_SMART_CLASS_TYPE_STR 1 /* Jaehun Lim(ljaehun.lim@samsung.com) : Fix UG crash */
475 #define ENABLE_TIZEN_SET_RECT_ANTIALIAS_NONE 1 /*KyungTae Kim(ktf.kim@samsung.com) : Off the antialias of clip and fill for rect for fixing whiteline bug on unaligned rect*/
476 #define ENABLE_TIZEN_INFLATE_NONE_BLUR_SHADOW_AREA 1 /*KyungTae Kim(ktf.kim@samsung.com) : Enlarge the clipping area 1 pixel so that the fill does not bleed (due to antialiasing) if the context is transformed*/
477 #if USE(FREETYPE)
478 #define ENABLE_TIZEN_FT_EMBOLDEN_FOR_SYNTHETIC_BOLD 1 /*Younghwan Cho(yhwan.cho@samsung.com) : Use freetype's 'embolden' instead of drawing twice for synthetic bold*/
479 #endif
480 #define ENABLE_TIZEN_WEBKIT_OWN_FONT_FILES 1 /*Younghwan Cho(yhwan.cho@samsung.com) : webkit's font-config is seperated from the system font's*/
481 #define ENABLE_TIZEN_NOT_CHECK_ROUNDED_BORDER_ALL_CLIPPED_OUT 1 /*KyungTae Kim(ktf.kim@samsung.com) : For fixing rounded rect border bug(borders on different tiles looks different), remove code for checking rounded rect border all clipped out and setting round to 0*/
482 #define ENABLE_TIZEN_ROUNDED_BORDER_CLIP_ANTIALIAS_ON 1 /*KyungTae Kim(ktf.kim@samsung.com) : On the antialias setting for a  convex polygon clip for a rounded rect. The antialias setting for rounded rects' borders must be ON because rounded rects painted with antialias on*/
483 #define ENABLE_TIZEN_NAVIGATOR_LANGUAGE_STR 1 /* Kihong Kwon(kihong.kwon@samsung.com) : Modify return value from like a "ko-KR.UTF8" to "ko-KR" for "navigator.language". */
484 #define ENABLE_TIZEN_ALLOW_TEXT_ENCODING_DETECTION_ONLY_ONCE 1 /*Kangil Han(kangil.han@samsung.com) : To fix text broken issue when reads local html file created by email application*/
485 #define ENABLE_TIZEN_FIX_SHOULD_AA_LINES_CONDITION 1 /*Younghwan Cho(yhwan.cho@samsung.com) : Add some conditions for AA to draw box-lines */
486 #define ENABLE_TIZEN_JPEGIMAGE_DECODING_THREAD 0 /* Keunyong Lee(ky07.lee@samsung.com) : Make new thread for Jpeg image decoding */
487 #define ENABLE_TIZEN_PAINT_TIMESTAMP_BUG_FIX 1 /*KyungTae Kim(ktf.kim@samsung.com) : FrameView::sCurrentPaintTimeStamp was not updated after FrameView::paintContents returns in the middle of the codes*/
488 #define ENABLE_TIZEN_BLOCK_SENDING_RESIZE_EVENT_WHILE_LOADING 1 /* Jaehun Lim(ljaehun.lim@samsung.com) : Fix the infinite layout when frame flattening is enabled */
489 #define ENABLE_TIZEN_REMOVE_IMG_SRC_ATTRIBUTE 1 /* Jaehun Lim(ljaehun.lim@samsung.com) : Don't paint when <img>'s src attribute is removed */
490
491 /* EWK and WebCore's patches */
492 #define ENABLE_TIZEN_SELECTIVE_RENDERING 1 /* Tomasz Morawski(t.morawski@samsung.com) : feature that allows to render tiles durring panning and zooming */
493 #define ENABLE_TIZEN_WEBCORE_SELECTIVE_RENDERING 1 /* Tomasz Morawski(t.morawski@samsung.com) : feature that allows to delays decompression of images durring panning */
494 #if ENABLE(TIZEN_WEBCORE_SELECTIVE_RENDERING) && !ENABLE(TIZEN_SELECTIVE_RENDERING)
495 #error "TIZEN_WEBCORE_SELECTIVE_RENDERING requires TIZEN_SELECTIVE_RENDERING"
496 #endif
497
498 #define ENABLE_TIZEN_SHOULD_ALLOW_OPEN_URL 1 /* Piotr Roguski(p.roguski@samsung.com) : feature that allows application to decide if url sould be opened or not */
499
500 #define ENABLE_TIZEN_ONSCROLL_EVENT_SUPPRESSION 1 /* SangSeok Lim: a feature that prevents DOM scroll events from firing during panning. instead if needed, at the end of panning, DOM scroll event will fire once for web site compatibility by ewk_frame_onscroll_event_generate */
501
502 #define ENABLE_TIZEN_AUTOFOCUS_BLOCK 1 /* Michal Pakula(m.pakula@samsung.com) : Feature that allows to block showing virtual keyboard when web page automatically focuses input field */
503
504 #define ENABLE_TIZEN_SCALEPAGE_SUPPORT 1 /* use scalePage instead of cairo scaling; Ryuan Choi(ryuan.choi@samsung.com) <ryuan.choi@samsung.com> */
505 #define ENABLE_TIZEN_CONTEXTSHADOW_BLUR_NEON 0 /* use neon shadowblur function in ContextShadow.cpp <hyunki.baik@samsung.com> */
506 #define ENABLE_TIZEN_ON_AUTHENTICATION_REQUESTED 1 /* Sungman Kim(ssungmai.kim@samsung.com) : Implement to requested authentication signal handling method */
507 #define ENABLE_TIZEN_ON_WEB_DATA_RECEIVED 1 /* Sungman Kim(ssungmai.kim@samsung.com) : Feature that offer the received http header and mimetype data by callback set function */
508 #define ENABLE_TIZEN_ON_REDIRECTION_REQUESTED 1 /* Sungman Kim(ssungmai.kim@samsung.com) : Feature that offer the redirection header by callback set function */
509
510 /* Download Patches */
511 #define ENABLE_TIZEN_DOWNLOAD 1 /* Keunsoon Lee(keunsoon.lee@samsung.com) : */
512 #define ENABLE_TIZEN_DOWNLOAD_SUPPORT_SSL 1 /* Keunsoon Lee(keunsoon.lee@samsung.com) : */
513
514
515 /* Geolocation's patches */
516 #if ENABLE(GEOLOCATION)
517 #define ENABLE_TIZEN_GEOLOCATION 1 /* Gyuyoung Kim(gyuyoung.kim@samsung.com) : */
518 #define ENABLE_TIZEN_GEOLOCATION_TIMEOUT_INCREASE 1 /* Gyuyoung Kim(gyuyoung.kim@samsung.com) : Need to increase timeout time because slp gps's connection needs to wait about 45 sec */
519 #endif
520
521 #if ENABLE(FILE_SYSTEM)
522 #define ENABLE_TIZEN_FILE_SYSTEM 1 /* Dongwoo Im(dw.im@samsung.com) : */
523 #endif
524
525 /* Visibility's patches */
526 #if ENABLE(PAGE_VISIBILITY_API)
527 #define ENABLE_TIZEN_PAGE_VISIBILITY_API 1 /* Dongwoo Im(dw.im@samsung.com) : */
528 #endif
529
530 /* WebAudio API */
531 #if ENABLE(WEB_AUDIO)
532 #define ENABLE_TIZEN_WEB_AUDIO 1 /* Dongwoo Im(dw.im@samsung.com) : Enable or Disable Tizen WebAudio feature.*/
533 #endif
534
535 /* Fullscreen API patch*/
536 #if ENABLE(FULLSCREEN_API)
537 #define ENABLE_TIZEN_FULLSCREEN_API 1 /* Jinwoo Song(jinwoo7.song@samsung.com): Enable Fullscreen API */
538 #endif
539
540 /* Search Provider API */
541 #define ENABLE_TIZEN_SEARCH_PROVIDER 0 /* Sanghyun Park(sh919.park@samsung.com): Enable Search Provider API */
542
543 /* Protocol Handlers API */
544 #if ENABLE(REGISTER_PROTOCOL_HANDLER)
545 #define ENABLE_TIZEN_REGISTER_PROTOCOL_HANDLER 1 /* Sanghyun Park(sh919.park@samsung.com): Enable register protocol handler for TIZEN */
546 #endif
547
548 /* Plugin Patches */
549 #define ENABLE_TIZEN_SUPPORT_PLUGINS 1 /* Mariusz Grzegorczyk(mariusz.g@samsung.com) : */
550 #define ENABLE_TIZEN_EVAS_OBJECT_PLUGIN 1 /* Mariusz Grzegorczyk(mariusz.g@samsung.com) : */
551 #define ENABLE_TIZEN_PLUGIN_PARENT_WINDOW 1 /* Mariusz Grzegorczyk(mariusz.g@samsung.com) : */
552 #define ENABLE_TIZEN_PLUGIN_SHOW_MISSING_PLUGIN_STATEMENT_EVEN_IF_PLUGIN_IS_DISABLED_ON_PREFERENCE 1 /* Keunsoon Lee(keunsoon.lee@samsung.com): show "missing plugin" even if preference setting for plugin is disabled. */
553 #define ENABLE_TIZEN_PLUGIN_WAITING_FOR_UPSTREAM 1 /* Keunsoon Lee(keunsoon.lee@samsung.com): codes which are waiting for landed on upstream */
554 #define ENABLE_TIZEN_FIX_PLUGIN_DOWNLOAD 1 /* KwangYong Choi(ky0.choi@samsung.com) :  Support downloading if plugin option is disabled */
555 #define ENABLE_TIZEN_SCAN_PLUGIN 1 /* KwangYong Choi(ky0.choi@samsung.com) : Implemented scan plugin feature for EFL */
556 #if !ENABLE(TIZEN_WEBKIT2)
557 #define ENABLE_TIZEN_KEYGEN 1 /* Dongwoo Im(dw.im@samsung.com) : */
558 #define ENABLE_TIZEN_DYNAMIC_LOADED_PLUGINS 1 /* Grzegorz Czajkowski(g.czajkowski@samsung.com) : */
559 #define ENABLE_TIZEN_ON_OFF_SPECIFIED_PLUGINS 1 /* Mariusz Grzegorczyk(mariusz.g@samsung.com) : */
560 #define ENABLE_TIZEN_RUN_PLUGINS_WITH_WRONG_OR_EMPTY_TYPE 1 /* Mariusz Grzegorczyk(mariusz.g@samsung.com) : */
561 #define ENABLE_TIZEN_PLUGIN_EXT 1 /* Mariusz Grzegorczyk(mariusz.g@samsung.com) : */
562 #define ENABLE_TIZEN_SUPPORT_XEMBED 1 /* Bang Kwang Min(justine.bang@samsung.com) */
563 /* This macro is for block panning over plugins that returns true from NPP_HandleEvent,
564     which means that all mouse events should go to plugin */
565 #define ENABLE_TIZEN_DONT_PAN_OVER_SOME_PLUGINS 1 /* Mariusz Grzegorczyk(mariusz.g@samsung.com) : */
566 /* Support for TIZEN WAC2.0 camera module */
567 #define ENABLE_TIZEN_PLUGIN_LOADING_FLOW 1 /* Grzegorz Czajkowski(g.czajkowski@samsung.com): new flow of loading plugins when requested library doesn't exist
568                                             - missing plugin indicator is shown when plugins are enabled,
569                                             - empty content is shown when plugins are disabled. */
570 #endif
571
572 /* support the special call which can be reached to UIProcess.
573  */
574 #define ENABLE_TIZEN_PLUGIN_CUSTOM_REQUEST 1 /* Bang Kwang Min(justine.bang@samsung.com) */
575
576 /* support the special call which JS send some data to Native App through Plugin.
577  */
578 #define ENABLE_TIZEN_JSBRIDGE_PLUGIN 1 /* Bang Kwang Min(justine.bang@samsung.com) */
579
580 #define ENABLE_TIZEN_MARK_PLUGIN_HANDLING_EVENTS 1 /* Mariusz Grzegorczyk(mariusz.g@samsung.com) : */
581
582 /*
583  * Extend standard npapi NPNVariable.
584  * Replace XEvents with XTNPEvents for tizen platform needs.
585  */
586 #define ENABLE_TIZEN_NPAPI 1 /* Mariusz Grzegorczyk(mariusz.g@samsung.com) : */
587
588 /* Debugging Patch */
589 #define ENABLE_TIZEN_LOG 1 /* Gyuyoung Kim(gyuyoung.kim@samsung.com) : */
590 #if ENABLE(TIZEN_LOG)
591 #define ENABLE_TIZEN_EWK_ERROR_LOG 1 /* JungJik Lee(jungjik.lee@samsung.com) : Add log message for the error trace */
592 #define ERROR_DISABLED 0
593 #define LOG_DISABLED 0
594 #endif
595 #define ENABLE_TIZEN_DISPLAY_MESSAGE_TO_CONSOLE 1 /* Seokju Kwon(seokju.kwon@samsung.com) : Display console-messages for WebApps, Browser ... */
596
597 /* change MAX_CONNECTIONS_PER_HOST value 6 -> 12 */
598 /* enhanced network loading speed */
599 /* apply tunning value */
600 #define ENABLE_TIZEN_SESSION_CONNECTION_PER_HOST_TUNNING 1 /* Who is owner ? : */
601
602
603 /* Network Patches*/
604 #define ENABLE_TIZEN_SET_PROXY 1 /* Łukasz Ślachciak(l.slachciak@samsung.com) : */
605 /* macro which solve network delay when some of contents was blocked for a while
606  - example) m.daum.net, m.paran.com
607  - When one of request was blocked, progress looks stopped at 50~60%(but almost was loaded) */
608 #define ENABLE_TIZEN_NETWORK_DELAYED_RESOURCE_SOLVE 1 /* Łukasz Ślachciak(l.slachciak@samsung.com) : */
609 /* need to reset session when network device is changed.(3G->wifi, wifi->3G)
610  * simple websites try to use previous socket which is binded previous network
611  * device.
612  */
613 #define ENABLE_TIZEN_SESSION_REQUEST_CANCEL 1 /* Who is owner ? : */
614
615 #if USE(SOUP)
616 /* enables ewk part of webkit soup cache */
617 #define ENABLE_TIZEN_SOUP_CACHE 1 /* Kwangtae Ko(kwangtae.ko@samsung.com : */
618 /* handle status code 5xx after receiving HTTP body */
619 #define ENABLE_TIZEN_SOUP_HANDLE_STATUS_CODE_5XX_AFTER_RECEIVING_HTTP_BODY 1 /* Changhyup Jwa(ch.jwa@samsung.com) : */
620 #define ENABLE_TIZEN_SOUP_NOT_ALLOW_BROWSE_LOCAL_DIRECTORY 1 /* Jongseok Yang(js45.yang@samsung.com) */
621 #endif
622 #define ENABLE_TIZEN_RESTARTED_CALLBACK_BUG_FIX 1 /*Sungman Kim(ssungmai.kim@samsung.com) : Resource handle ref count bug fix when restarted callback call*/
623
624 #define ENABLE_TIZEN_PERSISTENT_COOKIES_SQL 1 /* Kwangtae Ko(kwangtae.ko@samsung.com : */
625
626 #define ENABLE_TIZEN_PAUSE_NETWORK 1 /* Gyuyoung Kim(gyuyoung.kim@samsung.com) : */
627 #define ENABLE_TIZEN_HTTP_REQUEST_HEADER_APPEND 1 /* Kwangtae Ko(kwangtae.ko@samsung.com : Append request headers for  accept-charset and x-wap-proxy-cookie */
628
629
630 /* Workaround Patches */
631 #define ENABLE_TIZEN_PREVENT_INCREMENTAL_IMAGE_RENDERING_WORKAROUND 1 /* Ryuan Choi(ryuan.choi@samsung.com) : */
632 #define ENABLE_TIZEN_PREVENT_SCROLLER_IN_HTML_TAG 1 /* Ryuan Choi(ryuan.choi@samsung.com) : */
633 /* fix for showing callendar on expedia site when frame flattening enabled */
634 #define ENABLE_TIZEN_EXPEDIA_CALENDAR_FIX 1
635 /* fix for "white background appears while page is changed" */
636 #define ENABLE_TIZEN_WHITE_LOADING_FIX 1
637 /* fix for _ewk_view_smart_del due to crash of paused JavaScript when exiting */
638 #define ENABLE_TIZEN_DESTROY_FIX 1
639 #define ENABLE_TIZEN_POPUP_FIX 1
640 /* fix for issue with old tiles being visible after layout size change (e.g. after screen orientation change) */
641 #define ENABLE_TIZEN_CLEAN_AFTER_RELAYOUT_FIX 1 /* JungJik Lee(jungjik.lee@samsung.com) : */
642 /* fix for issue with non-updated tiles after contents resize*/
643 #define ENABLE_TIZEN_CTBS_UPDATE_AFTER_CONTENTS_RESIZE 1
644 /* fix for connection timeout */
645 #define ENABLE_TIZEN_TIMEOUT_FIX 1 /* Łukasz Ślachciak(l.slachciak@samsung.com) : */
646 /* fix for m.naver.com input field issue */
647 #define ENABLE_TIZEN_ZOOM_SET_INTERNAL_FIX 1 /* Kamil Blank(k.blank@samsung.com) : */
648 /* Workaround for character interval defect */
649 #define ENABLE_TIZEN_FONT_HINT_NONE 1 /* Jaesick Chang(jaesik.chang@samsung.com) : */
650 /* Fix for continues layout when element having width given in percent is nested in flattened frame
651    https://bugs.webkit.org/show_bug.cgi?id=54284
652 */
653 #define ENABLE_TIZEN_ELEMENTS_NESTED_IN_FLATTENED_FRAME_FIX 1 /* Piotr Roguski(p.roguski@samsung.com) : */
654 /* fix for wrong calculation of backing store's zoom center position. */
655 #define ENABLE_TIZEN_FIX_BUILD_BREAK_GCC_4_5 1 /* Gyuyoung Kim(gyuyoung.kim@samsung.com) : */
656 /* View mode patches */
657 #define ENABLE_TIZEN_VIEW_MODE 1 /* Who is ownver ? : */
658 #define ENABLE_TIZEN_PREVENT_CRASH_VIMEO_SITE 1 /* Jaehun Lim(ljaehun.lim@samsung.com) : Add NULL check to prevent crash in vimeo.com (for i386 or non-flash environment) */
659 /* update ewk_frame_script_execute to return the result for JavaScript */
660 /* fix recursive layout for frame flattening in homeway.com.cn and fnnews.com */
661 #define ENABLE_TIZEN_FIX_RECURSIVE_LAYOUT_FOR_FRAME_FLATTENING 1 /* Jongseok Yang(js45.yang@samsung.com) */
662 /* Workaround for using the defaut encoding set */
663 #define ENABLE_TIZEN_SET_DEFAULT_ENCODING 1 /* Jinwoo Song(jinwoo7.song@samsung.com) */
664 #define ENABLE_TIZEN_CLEAN_SHUTDOWN 1 /* Jaehun Lim(ljaehun.lim@samsung.com) : deallocate memory resources during ewk_shutdown() */
665 #define ENABLE_TIZEN_FIX_CLIP_PATTERN_RECT 1 /* Kyungjin Kim(gen.kim@samsung.com) : adjust clip rect to the min of pattern and clip for repeatX, repeatY */
666
667 /* JavaScript JIT */
668 #if ENABLE(JIT)
669 #define ENABLE_YARR 1
670 #define ENABLE_YARR_JIT 1
671 #endif
672
673 #define ENABLE_TIZEN_BUILD_THUMB_GCC 1
674 #define ENABLE_TIZEN_USE_STACKPOINTER_AT_WEBPROCESS_STARTUP 1
675
676 /* Original Webkit Features */
677 #if ENABLE(INSPECTOR)
678 #define ENABLE_TIZEN_REMOTE_WEB_INSPECTOR 1 /* Seokju Kwon(seokju.kwon@samsung.com) */
679 #endif
680
681 #define ENABLE_MAC_JAVA_BRIDGE 0
682 #define ENABLE_IMAGE_DECODER_DOWN_SAMPLING 0
683 #if ENABLE(IMAGE_DECODER_DOWN_SAMPLING)
684 #define ENABLE_TIZEN_IMAGE_DECODER_DOWN_SAMPLING 0 /* Jaehun Lim(ljaehun.lim@samsung.com) : Enabling image DOWN SAMPLING feature only for JPEG format */
685 #endif
686 #define ENABLE_TIZEN_JPEG_IMAGE_SCALE_DECODING 1 /* Keunyong Lee(ky07.lee@samsung.com) : Scaled decoding Feature for Jpeg Image. Becuase this Feature replace Down Sampling, IMAGE_DECODER_DOWN_SAMPLING should be false when you want to use it. */
687 #define ENABLE_TIZEN_REMOVE_DRAWLINE_ANTIALIAS_NONE 1 /* Keunyong Lee(ky07.lee@samsung.com) : Dash/Dot Box border and Text UnderLine display Bug Fix*/
688
689 #if ENABLE(TIZEN_WEBKIT2)
690 /* FIXME: We should turn on all of macros */
691 #undef ENABLE_TIZEN_CONTEXT_MENU
692 #undef ENABLE_TIZEN_INSTALL_CONTENT
693
694 #define ENABLE_TIZEN_CONTEXT_MENU_WEBKIT_2 1 /* Gyuyoung Kim(gyuyoung.kim@samsung.com), Eunmi Lee(eunmi15.lee@samsung.com) : Support Context Menu for EFL WebKit2 */
695
696 #if USE(ACCELERATED_COMPOSITING) && USE(TEXTURE_MAPPER)
697 #define ENABLE_TIZEN_WEBKIT2_DEBUG_BORDERS 1 /* Hyowon Kim(hw1008.kim@samsung.com) : Renders a border around composited Render Layers to help debug and study layer compositing. */
698 #define ENABLE_TIZEN_WEBKIT2_TILED_AC 1 /* Youngtaeck Song(youngtaeck.song@samsung.com) : Tiling with Acceletated compositing for Tizen */
699 #define ENABLE_TIZEN_WEBKIT2_TILED_AC_UPDATE_ONLY_VIEWPORT_AFTER_ZOOM 1 /* JungJik Lee(jungjik.lee@samsung.com) : WK2 Update the viewport area after zooming. */
700 #define ENABLE_TIZEN_WEB_LAYER_TREE_RENDERER_FUNCTION_NAME_BUG_FIX 1 /* YongGeol Jung(yg48.jung@samsung.com) : Fix wrong function name of WebLayerTreeRenderer */
701 #define ENABLE_TIZEN_ONESHOT_DRAWING_SYNCHRONIZATION 1 /* Hyowon Kim(hw1008.kim@samsung.com) : Fix layer flickering */
702 #define ENABLE_TIZEN_DONT_USE_TEXTURE_MAPPER_TEXTURE_POOL 1 /* Seojin Kim(seojin.kim@samsung.com) : TextureMapper texture pool has no shrink mechanism currently, and leads to OOM finally */
703 #define ENABLE_TIZEN_INHERIT_REF_COUNT_TO_TEXTURE_MAPPER_LAYER 1 /* JungJik Lee (jungjik.lee@samsung.com) : Inherit the reference count to TextureMapperLayer */
704 #define ENABLE_TIZEN_DONT_PURGE_BACKINGSTORE_WHEN_DETACHING_NODE_FROM_WEBLAYER_TREE 1 /* Seojin Kim (seojin.kim@samsung.com) : keep backing store even if layer tree's topology get changed. */
705 #define ENABLE_MEMORY_SAMPLER 1 /* JungJik Lee(jungjik.lee@samsung.com) : Show Memory usage */
706 #define WTF_USE_TEXTURE_MAPPER_GL 1 /* Youngtaeck Song(youngtaeck.song@samsung.com) : use TextureMapperGL for Tizen */
707 #define WTF_USE_TILED_BACKING_STORE 1
708 #define WTF_USE_UI_SIDE_COMPOSITING 1 /* Youngtaeck Song(youngtaeck.song@samsung.com) : Compositing on the UI-process in WebKit2 */
709 #endif
710
711 #if USE(TILED_BACKING_STORE)
712 #define ENABLE_TIZEN_WEBKIT2_TILED_BACKING_STORE 1 /* Youngtaeck Song(youngtaeck.song@samsung.com) : Tiled backing store for Tizen */
713 #define ENABLE_TIZEN_WEBKIT2_TILED_SCROLLBAR 1 /* Ryuan Choi(ryuan.choi@samsung.com) : Scrollbar implementation for Tiled DrawingArea */
714 #define ENABLE_TIZEN_NOT_USE_TRANSFORM_INFO_WHEN_GETTING_CARET_RECT 1 /* Youngtaeck Song(youngtaeck.song@samsung.com) : Patch to do not use transform infomation when getting caret rect */
715 #endif
716 #define ENABLE_TIZEN_WEBKIT2_TEXT_SELECTION 1 /* Kamil Blank(k.blank@samsung.com), Yuni Jeong(yhnet.jung@samsung.com) : */
717 #define ENABLE_TIZEN_GSTREAMER_VIDEO 1 /* Kwangyong Choi : Fixed media control display when using gstreamer video */
718
719 #if USE(TILED_BACKING_STORE)
720 #define ENABLE_TIZEN_RECORDING_SURFACE_SET 0 /* Hyunki Baik(hyunki.baik@samsung.com) : recording surface features for WK2 */
721 #if ENABLE(TIZEN_RECORDING_SURFACE_SET)
722 #define ENABLE_TIZEN_RECORDING_SURFACE_PAINT_THREAD 0 /* Hyunki Baik(hyunki.baik@samsung.com), Hyeonji Kim(hyeonji.kim@samsung.com) : enable paint thread for parallelization in WK2 */
723 #endif
724 #else
725 #define ENABLE_TIZEN_RECORDING_SURFACE_SET 0 /* Hyunki Baik(hyunki.baik@samsung.com) : recording surface features for WK2 */
726 #define ENABLE_TIZEN_RECORDING_SURFACE_PAINT_THREAD 0 /* Hyunki Baik(hyunki.baik@samsung.com), Hyeonji Kim(hyeonji.kim@samsung.com) : enable paint thread for parallelization in WK2 */
727 #endif
728
729 #define ENABLE_TIZEN_GESTURE 1 /* Eunmi Lee(eunmi15.lee@samsung.com) : Use Gesture which uses elm_gesture_layer. */
730 #if ENABLE(TIZEN_GESTURE)
731 #endif
732
733 #define ENABLE_TIZEN_PREFERENCE 1 /* Eunmi Lee(eunmi15.lee@samsung.com) : for slp specific preferences */
734 #define ENABLE_TIZEN_LOAD_REMOTE_IMAGES 1 /* Dongjae Kim(dongjae1.kim@samsung.com) : for tizen remode image load setting */
735
736 #define ENABLE_TIZEN_WAC_DISABLE_GEOLOCATION 1 /* Jongseok Yang(js45.yang@samsung.com) : to disable geolocation object of javascript for WAC Feature */
737
738 #define ENABLE_TIZEN_SOUP_COOKIE_CACHE_FOR_WEBKIT2 1 /* Jongseok Yang(js45.yang@samsung.com) : Implement soup cache, cookie */
739 #define ENABLE_TIZEN_WEBKIT2_CURSOR_PARTIAL_EARLY_MERGE ENABLE_TIZEN_WEBKIT2 /* Ryuan Choi(ryuan.choi@samsung.com) : Early merge to support cursor */
740 #define ENABLE_TIZEN_WEBKIT2_THEME_SET 1 /* Ryuan Choi(ryuan.choi@samsung.com) : Provide API to set theme */
741 #define ENABLE_TIZEN_WEBKIT2_THEME_SET_INTERNAL 1 /* Ryuan Choi(ryuan.choi@samsung.com) : Set to default theme for WK2/tizen */
742 #define ENABLE_TIZEN_WEBKIT2_PROXY 1 /* Ryuan Choi(ryuan.choi@samsung.com) : Provide API to set proxy */
743 #define ENABLE_TIZEN_WEBKIT2_PICKER 1 /* Ryuan Choi(ryuan.choi@samsung.com) : Provide elementary based picker */
744 #define ENABLE_TIZEN_WEBKIT2_POPUP 1 /* Ryuan Choi(ryuan.choi@samsung.com) : popup implementation for WK2 (contributable) */
745 #define ENABLE_TIZEN_WEBKIT2_POPUP_INTERNAL ENABLE_TIZEN_WEBKIT2_POPUP /* Ryuan Choi(ryuan.choi@samsung.com) : popup implementation for WK2/tizen */
746 #define ENABLE_TIZEN_SCREEN_ORIENTATION_SUPPORT_INTERNAL ENABLE_TIZEN_SCREEN_ORIENTATION_SUPPORT /* Ryuan choi(ryuan.choi@samsung.com) : temporal implementation for screen orientation lock callback */
747
748 #define ENABLE_TIZEN_WEBKIT2_FOCUS_RING 1 /* Yuni Jeong(yhnet.jung@samsung.com) : Focus ring implementation for WK2 */
749 #if ENABLE_TIZEN_WEBKIT2_FOCUS_RING
750 #undef ENABLE_TIZEN_FOCUS_RING
751 #endif /* ENABLE_TIZEN_WEBKIT2_FOCUS_RING */
752 #define ENABLE_TIZEN_WEBKIT2_VIEW_VISIBILITY 1 /* Eunsol Park(eunsol47.park@samsung.com) : add API for setting the webPage's visibility */
753 #define ENABLE_TIZEN_WEBKIT2_NUMBER_TYPE_SUPPORT 1 /* Seonae Kim(sunaeluv.kim@samsung.com) : add number types for switching WK number types */
754 #if ENABLE(INSPECTOR)
755 #define ENABLE_TIZEN_WEBKIT2_REMOTE_WEB_INSPECTOR 1 /* Seokju Kwon(seokju.kwon@samsung.com) : Remote Web Inspector implementation for WK2 */
756 #endif
757 #define ENABLE_TIZEN_WEBKIT2_VISITED_LINKS 1 /* Jaehun Lim(ljaehun.lim@samsung.com) : workaround patch for coloring visited links.
758                                               * this patch should be removed after WK2 HistoryClient is implemented.
759                                               */
760
761 #define ENABLE_TIZEN_WEBKIT2_HIT_TEST 1 /* Yuni Jeong(yhnet.jung@samsung.com) : Hit Test API implementation for WK2 */
762 #define ENABLE_TIZEN_WEBKIT2_PATCH_FOR_TC 1 /* Changhyup Jwa(ch.jwa@samsung.com) : Patchs to pass TC */
763 #define ENABLE_TIZEN_WEBKIT2_GET_TEXT_STYLE_FOR_SELECTION 1 /* Yuni Jeong(yhnet.jung@samsung.com) : Patchs to get text style for supporting email requirement */
764
765 #if ENABLE(TIZEN_PREFERENCE)
766 #define ENABLE_TIZEN_WEBKIT2_TEXT_ZOOM 1 /* Changhyup Jwa(ch.jwa@samsung.com) : Enable/Disable text zoom on user's pinch zoom */
767 #endif
768
769 #define ENABLE_TIZEN_WEBKIT2_CREATE_VIEW_WITH_CREATED_PAGE_GROUP_WITH_IDENTIFIER 1 /* Yuni Jeong(yhnet.jung@samsung.com) : Patchs to create view with created page group with identifier */
770 #endif /* ENABLE(TIZEN_WEBKIT2) */
771
772 /* When displaying menu list using menu icon, a additional scrollbar is displayed in the screen center
773    So, this patch is to remove the logic for a additional scrollbar */
774 #define ENABLE_TIZEN_FIX_DRAWING_ADDITIONAL_SCROLLBAR 1 /* Jongseok Yang(js45.yang@samsung.com) */
775
776 /*
777   * Problem : An additional scrollbar is displayed in the screen center when loading is finished as auto fitting.
778   * Solution : Remove the Widget::frameRectsChanged for EFL port. */
779 #define ENABLE_TIZEN_FIX_SCROLLBAR_FOR_AUTO_FITTING 1 /* Jongseok Yang(js45.yang@samsung.com) */
780
781 /* The scrollbar just for ScrollView is disaplyed.
782    The scrollbar for other object is not displayed. (ex. DIV scrollbar) */
783 #define ENABLE_TIZEN_DISPLAY_SCROLLBAR_JUST_FOR_SCROLLVIEW 1 /* Jongseok Yang(js45.yang@samsung.com) */
784
785 /* If the memory block using singleton pettern is freed outside the pattern,
786    the block is freed but the variable has an invalid address as ever.
787    So, It may cause some defect when repeating ewk_init and ewk_shutdown. */
788 #define ENABLE_TIZEN_FIX_ISSUE_FOR_REPEATED_INIT_AND_SHUTDOWN 1 /* Jongseok Yang(js45.yang@samsung.com) */
789
790 #if USE(ACCELERATED_COMPOSITING)
791 #define ENABLE_TIZEN_ACCELERATED_COMPOSITING 1 /* Hyowon Kim(hw1008.kim@samsung.com) */
792 #if USE(TEXTURE_MAPPER)
793 #define WTF_USE_TIZEN_TEXTURE_MAPPER 1
794 #endif
795
796 #if ENABLE(TIZEN_WEBKIT2)
797 #define ENABLE_TIZEN_MOBILE_WEB_PRINT 1 /* Hyunsoo Shim(hyunsoo.shim@samsung.com) : Mobile Web Print for AC layer */
798 #define ENABLE_TIZEN_EMULATOR_CONTEXT_ERROR_WORKAROUND 1 /* YongGeol Jung(yg48.jung@samsung.com) : eglMakeCurrent should be called before glReadPixels(emulator issue).*/
799 #endif
800 #define ENABLE_TIZEN_CSS_FIXED_ACCELERATION 1 /* Jaehun Lim(ljaehun.lim@samsung.com) : Accelerated CSS FIXED elements */
801 #if ENABLE(OVERFLOW_SCROLLING)
802 #define ENABLE_TIZEN_CSS_OVERFLOW_SCROLL_ACCELERATION 1 /* ChangSeok Oh(midow.oh@samsung.com) : Accelerated CSS overflow:scroll elements */
803 #endif
804 #define ENABLE_TIZEN_SCRIPTED_ANIMATION_CONTROLLER_BUG_FIX 1 /* YongGeol Jung(yg48.jung@samsung.com) : If suspend_count is less than 0, then making it to zero.*/
805 #if ENABLE(TIZEN_WEBKIT2)
806 #define ENABLE_TIZEN_CSS_OVERFLOW_SCROLL_ACCELERATION_ON_UI_SIDE 1 /* ChangSeok Oh(midow.oh@samsung.com) : Accelerated scrolling CSS overflow:scroll elements on UI Process. */
807 #else
808 #define ENABLE_TIZEN_TWEAK_MASK_LAYER_BORDER_OPACITY 1 /* ChangSeok Oh(midow.oh@samsung.com) : Make less transparent */
809 #define ENABLE_TIZEN_RENDER_WEBGL_SCENE_TO_COMPOSITING_TEXTURE_DIRECTLY 1 /* ChangSeok Oh(midow.oh@samsung.com) : No copy from original texture to compositing texture */
810 #define ENABLE_TIZEN_HTML5_VIDEO_PIXMAP_BUFFER 0 /*YongGeol Jung(yg48.jung@samsung.com) :  Render video using pixmap */
811 #endif
812 #endif
813
814 #if ENABLE(PAGE_VISIBILITY_API)
815 #define ENABLE_TIZEN_PAGE_VISIBILITY_API 1 /* Kihong Kwon(kihong.kwon@samsung.com) : Support the Page Visibility API */
816 #endif
817
818 #endif /* OS(TIZEN) */
819
820 /* ==== OS() - underlying operating system; only to be used for mandated low-level services like 
821    virtual memory, not to choose a GUI toolkit ==== */
822
823 /* OS(ANDROID) - Android */
824 #ifdef ANDROID
825 #define WTF_OS_ANDROID 1
826 #endif
827
828 /* OS(AIX) - AIX */
829 #ifdef _AIX
830 #define WTF_OS_AIX 1
831 #endif
832
833 /* OS(DARWIN) - Any Darwin-based OS, including Mac OS X and iPhone OS */
834 #ifdef __APPLE__
835 #define WTF_OS_DARWIN 1
836
837 #include <Availability.h>
838 #include <AvailabilityMacros.h>
839 #include <TargetConditionals.h>
840 #endif
841
842 /* OS(IOS) - iOS */
843 /* OS(MAC_OS_X) - Mac OS X (not including iOS) */
844 #if OS(DARWIN) && ((defined(TARGET_OS_EMBEDDED) && TARGET_OS_EMBEDDED) \
845     || (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE)                 \
846     || (defined(TARGET_IPHONE_SIMULATOR) && TARGET_IPHONE_SIMULATOR))
847 #define WTF_OS_IOS 1
848 #elif OS(DARWIN) && defined(TARGET_OS_MAC) && TARGET_OS_MAC
849 #define WTF_OS_MAC_OS_X 1
850 /* FIXME: BUILDING_ON_.., and TARGETING... macros should be folded into the OS() system */
851 #if !defined(MAC_OS_X_VERSION_10_6) || MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_6
852 #define BUILDING_ON_LEOPARD 1
853 #elif !defined(MAC_OS_X_VERSION_10_7) || MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7
854 #define BUILDING_ON_SNOW_LEOPARD 1
855 #elif !defined(MAC_OS_X_VERSION_10_8) || MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_8
856 #define BUILDING_ON_LION 1
857 #endif
858 #if !defined(MAC_OS_X_VERSION_10_6) || MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_6
859 #define TARGETING_LEOPARD 1
860 #elif !defined(MAC_OS_X_VERSION_10_7) || MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_7
861 #define TARGETING_SNOW_LEOPARD 1
862 #elif !defined(MAC_OS_X_VERSION_10_8) || MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_8
863 #define TARGETING_LION 1
864 #endif
865 #endif
866
867 /* OS(FREEBSD) - FreeBSD */
868 #if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__FreeBSD_kernel__)
869 #define WTF_OS_FREEBSD 1
870 #endif
871
872 /* OS(HURD) - GNU/Hurd */
873 #ifdef __GNU__
874 #define WTF_OS_HURD 1
875 #endif
876
877 /* OS(LINUX) - Linux */
878 #ifdef __linux__
879 #define WTF_OS_LINUX 1
880 #endif
881
882 /* OS(NETBSD) - NetBSD */
883 #if defined(__NetBSD__)
884 #define WTF_OS_NETBSD 1
885 #endif
886
887 /* OS(OPENBSD) - OpenBSD */
888 #ifdef __OpenBSD__
889 #define WTF_OS_OPENBSD 1
890 #endif
891
892 /* OS(QNX) - QNX */
893 #if defined(__QNXNTO__)
894 #define WTF_OS_QNX 1
895 #endif
896
897 /* OS(SOLARIS) - Solaris */
898 #if defined(sun) || defined(__sun)
899 #define WTF_OS_SOLARIS 1
900 #endif
901
902 /* OS(WINCE) - Windows CE; note that for this platform OS(WINDOWS) is also defined */
903 #if defined(_WIN32_WCE)
904 #define WTF_OS_WINCE 1
905 #endif
906
907 /* OS(WINDOWS) - Any version of Windows */
908 #if defined(WIN32) || defined(_WIN32)
909 #define WTF_OS_WINDOWS 1
910 #endif
911
912 #define WTF_OS_WIN ERROR "USE WINDOWS WITH OS NOT WIN"
913 #define WTF_OS_MAC ERROR "USE MAC_OS_X WITH OS NOT MAC"
914
915 /* OS(UNIX) - Any Unix-like system */
916 #if   OS(AIX)              \
917     || OS(ANDROID)          \
918     || OS(DARWIN)           \
919     || OS(FREEBSD)          \
920     || OS(HURD)             \
921     || OS(LINUX)            \
922     || OS(NETBSD)           \
923     || OS(OPENBSD)          \
924     || OS(QNX)              \
925     || OS(SOLARIS)          \
926     || defined(unix)        \
927     || defined(__unix)      \
928     || defined(__unix__)
929 #define WTF_OS_UNIX 1
930 #endif
931
932 /* Operating environments */
933
934 /* FIXME: these are all mixes of OS, operating environment and policy choices. */
935 /* PLATFORM(CHROMIUM) */
936 /* PLATFORM(QT) */
937 /* PLATFORM(WX) */
938 /* PLATFORM(GTK) */
939 /* PLATFORM(BLACKBERRY) */
940 /* PLATFORM(MAC) */
941 /* PLATFORM(WIN) */
942 #if defined(BUILDING_CHROMIUM__)
943 #define WTF_PLATFORM_CHROMIUM 1
944 #elif defined(BUILDING_QT__)
945 #define WTF_PLATFORM_QT 1
946 #elif defined(BUILDING_WX__)
947 #define WTF_PLATFORM_WX 1
948 #elif defined(BUILDING_GTK__)
949 #define WTF_PLATFORM_GTK 1
950 #elif defined(BUILDING_BLACKBERRY__)
951 #define WTF_PLATFORM_BLACKBERRY 1
952 #elif OS(DARWIN)
953 #define WTF_PLATFORM_MAC 1
954 #elif OS(WINDOWS)
955 #define WTF_PLATFORM_WIN 1
956 #endif
957
958 /* PLATFORM(IOS) */
959 /* FIXME: this is sometimes used as an OS switch and sometimes for higher-level things */
960 #if (defined(TARGET_OS_EMBEDDED) && TARGET_OS_EMBEDDED) || (defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE)
961 #define WTF_PLATFORM_IOS 1
962 #endif
963
964 /* PLATFORM(IOS_SIMULATOR) */
965 #if defined(TARGET_IPHONE_SIMULATOR) && TARGET_IPHONE_SIMULATOR
966 #define WTF_PLATFORM_IOS 1
967 #define WTF_PLATFORM_IOS_SIMULATOR 1
968 #endif
969
970 /* Graphics engines */
971
972 /* USE(CG) and PLATFORM(CI) */
973 #if PLATFORM(MAC) || PLATFORM(IOS)
974 #define WTF_USE_CG 1
975 #endif
976 #if PLATFORM(MAC) || PLATFORM(IOS) || (PLATFORM(WIN) && USE(CG))
977 #define WTF_USE_CA 1
978 #endif
979
980 /* USE(SKIA) for Win/Linux/Mac/Android */
981 #if PLATFORM(CHROMIUM)
982 #if OS(DARWIN)
983 #if USE(SKIA_ON_MAC_CHROMIUM)
984 #define WTF_USE_SKIA 1
985 #else
986 #define WTF_USE_CG 1
987 #endif
988 #define WTF_USE_ATSUI 1
989 #define WTF_USE_CORE_TEXT 1
990 #define WTF_USE_ICCJPEG 1
991 #elif OS(ANDROID)
992 #define WTF_USE_SKIA 1
993 #else
994 #define WTF_USE_SKIA 1
995 #define WTF_USE_CHROMIUM_NET 1
996 #endif
997 #endif
998
999 #if PLATFORM(BLACKBERRY)
1000 #define USE_SYSTEM_MALLOC 1
1001 #define WTF_USE_MERSENNE_TWISTER_19937 1
1002 #define WTF_USE_SKIA 1
1003 #endif
1004
1005 #if PLATFORM(GTK)
1006 #define WTF_USE_CAIRO 1
1007 #endif
1008
1009
1010 #if OS(WINCE)
1011 #define WTF_USE_MERSENNE_TWISTER_19937 1
1012 #endif
1013
1014 /* On Windows, use QueryPerformanceCounter by default */
1015 #if OS(WINDOWS)
1016 #define WTF_USE_QUERY_PERFORMANCE_COUNTER  1
1017 #endif
1018
1019 #if OS(WINCE) && !PLATFORM(QT)
1020 #define NOMINMAX       /* Windows min and max conflict with standard macros */
1021 #define NOSHLWAPI      /* shlwapi.h not available on WinCe */
1022
1023 /* MSDN documentation says these functions are provided with uspce.lib.  But we cannot find this file. */
1024 #define __usp10__      /* disable "usp10.h" */
1025
1026 #define _INC_ASSERT    /* disable "assert.h" */
1027 #define assert(x)
1028
1029 #endif  /* OS(WINCE) && !PLATFORM(QT) */
1030
1031 #if PLATFORM(QT)
1032 #ifndef WTF_USE_ICU_UNICODE
1033 #define WTF_USE_QT4_UNICODE 1
1034 #endif
1035 #elif OS(WINCE)
1036 #define WTF_USE_WINCE_UNICODE 1
1037 #elif PLATFORM(GTK)
1038 /* The GTK+ Unicode backend is configurable */
1039 #else
1040 #define WTF_USE_ICU_UNICODE 1
1041 #endif
1042
1043 #if PLATFORM(MAC) && !PLATFORM(IOS)
1044 #if !defined(BUILDING_ON_LEOPARD) && CPU(X86_64)
1045 #define WTF_USE_PLUGIN_HOST_PROCESS 1
1046 #endif
1047 #if !defined(BUILDING_ON_LEOPARD) && !defined(BUILDING_ON_SNOW_LEOPARD)
1048 #define ENABLE_GESTURE_EVENTS 1
1049 #define ENABLE_RUBBER_BANDING 1
1050 #define WTF_USE_SCROLLBAR_PAINTER 1
1051 #endif
1052 #if !defined(ENABLE_JAVA_BRIDGE)
1053 #define ENABLE_JAVA_BRIDGE 1
1054 #endif
1055 #if !defined(ENABLE_DASHBOARD_SUPPORT)
1056 #define ENABLE_DASHBOARD_SUPPORT 1
1057 #endif
1058 #define WTF_USE_CF 1
1059 #define WTF_USE_PTHREADS 1
1060 #define HAVE_PTHREAD_RWLOCK 1
1061 #define HAVE_READLINE 1
1062 #define HAVE_RUNLOOP_TIMER 1
1063 #define ENABLE_FULLSCREEN_API 1
1064 #define ENABLE_SMOOTH_SCROLLING 1
1065 #define ENABLE_WEB_ARCHIVE 1
1066 #define ENABLE_WEB_AUDIO 1
1067 #if defined(ENABLE_VIDEO)
1068 #define ENABLE_VIDEO_TRACK 1
1069 #endif
1070 #if !defined(BUILDING_ON_LEOPARD) && !defined(BUILDING_ON_SNOW_LEOPARD) && !defined(BUILDING_ON_LION)
1071 #define HAVE_LAYER_HOSTING_IN_WINDOW_SERVER 1
1072 #endif
1073 #define WTF_USE_APPKIT 1
1074 #define WTF_USE_SECURITY_FRAMEWORK 1
1075 #endif /* PLATFORM(MAC) && !PLATFORM(IOS) */
1076
1077 #if PLATFORM(CHROMIUM) && OS(DARWIN)
1078 #define WTF_USE_CF 1
1079 #define WTF_USE_PTHREADS 1
1080 #define HAVE_PTHREAD_RWLOCK 1
1081
1082 #define WTF_USE_WK_SCROLLBAR_PAINTER 1
1083 #endif
1084
1085 #if PLATFORM(IOS)
1086 #define DONT_FINALIZE_ON_MAIN_THREAD 1
1087 #endif
1088
1089 #if PLATFORM(QT) && OS(DARWIN)
1090 #define WTF_USE_CF 1
1091 #endif
1092
1093 #if OS(DARWIN) && !PLATFORM(GTK) && !PLATFORM(QT)
1094 #define ENABLE_PURGEABLE_MEMORY 1
1095 #endif
1096
1097 #if PLATFORM(IOS)
1098 #define ENABLE_CONTEXT_MENUS 0
1099 #define ENABLE_DRAG_SUPPORT 0
1100 #define ENABLE_GEOLOCATION 1
1101 #define ENABLE_ICONDATABASE 0
1102 #define ENABLE_INSPECTOR 1
1103 #define ENABLE_JAVA_BRIDGE 0
1104 #define ENABLE_NETSCAPE_PLUGIN_API 0
1105 #define ENABLE_ORIENTATION_EVENTS 1
1106 #define ENABLE_REPAINT_THROTTLING 1
1107 #define ENABLE_WEB_ARCHIVE 1
1108 #define HAVE_NETWORK_CFDATA_ARRAY_CALLBACK 1
1109 #define HAVE_PTHREAD_RWLOCK 1
1110 #define HAVE_READLINE 1
1111 #define WTF_USE_CF 1
1112 #define WTF_USE_CFNETWORK 1
1113 #define WTF_USE_PTHREADS 1
1114
1115 #if PLATFORM(IOS_SIMULATOR)
1116     #define ENABLE_CLASSIC_INTERPRETER 1
1117     #define ENABLE_JIT 0
1118     #define ENABLE_YARR_JIT 0
1119 #else
1120     #define ENABLE_CLASSIC_INTERPRETER 0
1121     #define ENABLE_JIT 1
1122     #define ENABLE_LLINT 1
1123     #define ENABLE_YARR_JIT 1
1124 #endif
1125
1126 #define WTF_USE_APPKIT 0
1127 #define WTF_USE_SECURITY_FRAMEWORK 0
1128 #endif
1129
1130 #if PLATFORM(WIN) && !OS(WINCE)
1131 #define WTF_USE_CF 1
1132 #endif
1133
1134 #if PLATFORM(WIN) && !OS(WINCE) && !PLATFORM(CHROMIUM) && !PLATFORM(WIN_CAIRO)
1135 #define WTF_USE_CFNETWORK 1
1136 #endif
1137
1138 #if USE(CFNETWORK) || PLATFORM(MAC) || PLATFORM(IOS)
1139 #define WTF_USE_CFURLCACHE 1
1140 #define WTF_USE_CFURLSTORAGESESSIONS 1
1141 #endif
1142
1143 #if PLATFORM(WIN) && !OS(WINCE) && !PLATFORM(CHROMIUM) && !PLATFORM(QT)
1144 #define ENABLE_WEB_ARCHIVE 1
1145 #endif
1146
1147 #if PLATFORM(WIN) && !OS(WINCE) && !PLATFORM(CHROMIUM) && !PLATFORM(WIN_CAIRO) && !PLATFORM(QT)
1148 #define ENABLE_FULLSCREEN_API 1
1149 #endif
1150
1151 #if PLATFORM(WX)
1152 #if !CPU(PPC)
1153 #define ENABLE_ASSEMBLER 1
1154 #define ENABLE_JIT 1
1155 #endif
1156 #define ENABLE_GLOBAL_FASTMALLOC_NEW 0
1157 #define ENABLE_LLINT 0
1158 #if OS(DARWIN)
1159 #define WTF_USE_CF 1
1160 #define WTF_USE_CORE_TEXT 1
1161 #define ENABLE_WEB_ARCHIVE 1
1162 #endif
1163 #endif
1164
1165 #if PLATFORM(GTK)
1166 #if HAVE(PTHREAD_H)
1167 #define WTF_USE_PTHREADS 1
1168 #define HAVE_PTHREAD_RWLOCK 1
1169 #endif
1170 #elif PLATFORM(QT) && OS(UNIX)
1171 #define WTF_USE_PTHREADS 1
1172 #define HAVE_PTHREAD_RWLOCK 1
1173 #endif
1174
1175 #if !defined(HAVE_ACCESSIBILITY)
1176 #if PLATFORM(IOS) || PLATFORM(MAC) || PLATFORM(WIN) || PLATFORM(GTK) || (PLATFORM(CHROMIUM) && !OS(ANDROID))
1177 #define HAVE_ACCESSIBILITY 1
1178 #endif
1179 #endif /* !defined(HAVE_ACCESSIBILITY) */
1180
1181 #if OS(UNIX)
1182 #define HAVE_SIGNAL_H 1
1183 #define WTF_USE_OS_RANDOMNESS 1
1184 #endif
1185
1186 #if (OS(FREEBSD) || OS(OPENBSD)) && !defined(__GLIBC__)
1187 #define HAVE_PTHREAD_NP_H 1
1188 #endif
1189
1190 #if !defined(HAVE_VASPRINTF)
1191 #if !COMPILER(MSVC) && !COMPILER(RVCT) && !COMPILER(MINGW) && !(COMPILER(GCC) && OS(QNX))
1192 #define HAVE_VASPRINTF 1
1193 #endif
1194 #endif
1195
1196 #if !defined(HAVE_STRNSTR)
1197 #if OS(DARWIN) || (OS(FREEBSD) && !defined(__GLIBC__))
1198 #define HAVE_STRNSTR 1
1199 #endif
1200 #endif
1201
1202 #if !OS(WINDOWS) && !OS(SOLARIS) \
1203     && !OS(RVCT) \
1204     && !OS(ANDROID)
1205 #define HAVE_TM_GMTOFF 1
1206 #define HAVE_TM_ZONE 1
1207 #define HAVE_TIMEGM 1
1208 #endif
1209
1210 #if OS(DARWIN)
1211
1212 #define HAVE_ERRNO_H 1
1213 #define HAVE_LANGINFO_H 1
1214 #define HAVE_MMAP 1
1215 #define HAVE_MERGESORT 1
1216 #define HAVE_SBRK 1
1217 #define HAVE_STRINGS_H 1
1218 #define HAVE_SYS_PARAM_H 1
1219 #define HAVE_SYS_TIME_H 1
1220 #define HAVE_SYS_TIMEB_H 1
1221 #define WTF_USE_ACCELERATE 1
1222
1223 #ifndef TARGETING_LEOPARD
1224
1225 #define HAVE_DISPATCH_H 1
1226 #define HAVE_HOSTED_CORE_ANIMATION 1
1227
1228 #if !PLATFORM(IOS)
1229 #define HAVE_MADV_FREE_REUSE 1
1230 #define HAVE_MADV_FREE 1
1231 #define HAVE_PTHREAD_SETNAME_NP 1
1232 #endif
1233
1234 #endif
1235
1236 #if PLATFORM(IOS)
1237 #define HAVE_MADV_FREE 1
1238 #define HAVE_PTHREAD_SETNAME_NP 1
1239 #endif
1240
1241 #elif OS(WINDOWS)
1242
1243 #if !OS(WINCE)
1244 #define HAVE_SYS_TIMEB_H 1
1245 #define HAVE_ALIGNED_MALLOC 1
1246 #define HAVE_ISDEBUGGERPRESENT 1
1247 #endif
1248 #define HAVE_VIRTUALALLOC 1
1249 #define WTF_USE_OS_RANDOMNESS 1
1250
1251 #elif OS(QNX)
1252
1253 #define HAVE_ERRNO_H 1
1254 #define HAVE_MMAP 1
1255 #define HAVE_MADV_FREE_REUSE 1
1256 #define HAVE_MADV_FREE 1
1257 #define HAVE_SBRK 1
1258 #define HAVE_STRINGS_H 1
1259 #define HAVE_SYS_PARAM_H 1
1260 #define HAVE_SYS_TIME_H 1
1261 #define WTF_USE_PTHREADS 1
1262
1263 #elif OS(ANDROID)
1264
1265 #define HAVE_ERRNO_H 1
1266 #define HAVE_NMAP 1
1267 #define HAVE_SBRK 1
1268 #define HAVE_STRINGS_H 1
1269 #define HAVE_SYS_PARAM_H 1
1270 #define HAVE_SYS_TIME_H 1
1271
1272 #else
1273
1274 /* FIXME: is this actually used or do other platforms generate their own config.h? */
1275
1276 #define HAVE_ERRNO_H 1
1277 #define HAVE_LANGINFO_H 1
1278 #define HAVE_MMAP 1
1279 #define HAVE_SBRK 1
1280 #define HAVE_STRINGS_H 1
1281 #define HAVE_SYS_PARAM_H 1
1282 #define HAVE_SYS_TIME_H 1
1283
1284 #endif
1285
1286 /* ENABLE macro defaults */
1287
1288 #if PLATFORM(QT)
1289 /* We must not customize the global operator new and delete for the Qt port. */
1290 #define ENABLE_GLOBAL_FASTMALLOC_NEW 0
1291 #if !OS(UNIX)
1292 #define USE_SYSTEM_MALLOC 1
1293 #endif
1294 #endif
1295
1296 #if !defined(ENABLE_ICONDATABASE)
1297 #define ENABLE_ICONDATABASE 1
1298 #endif
1299
1300 #if !defined(ENABLE_SQL_DATABASE)
1301 #define ENABLE_SQL_DATABASE 1
1302 #endif
1303
1304 #if !defined(ENABLE_JAVASCRIPT_DEBUGGER)
1305 #define ENABLE_JAVASCRIPT_DEBUGGER 1
1306 #endif
1307
1308 #if !defined(ENABLE_FTPDIR)
1309 #define ENABLE_FTPDIR 1
1310 #endif
1311
1312 #if !defined(ENABLE_CONTEXT_MENUS)
1313 #define ENABLE_CONTEXT_MENUS 1
1314 #endif
1315
1316 #if !defined(ENABLE_DRAG_SUPPORT)
1317 #define ENABLE_DRAG_SUPPORT 1
1318 #endif
1319
1320 #if !defined(ENABLE_INSPECTOR)
1321 #define ENABLE_INSPECTOR 1
1322 #endif
1323
1324 #if !defined(ENABLE_NETSCAPE_PLUGIN_API)
1325 #define ENABLE_NETSCAPE_PLUGIN_API 1
1326 #endif
1327
1328 #if !defined(ENABLE_GLOBAL_FASTMALLOC_NEW)
1329 #define ENABLE_GLOBAL_FASTMALLOC_NEW 1
1330 #endif
1331
1332 #if !defined(ENABLE_PARSED_STYLE_SHEET_CACHING)
1333 #define ENABLE_PARSED_STYLE_SHEET_CACHING 1
1334 #endif
1335
1336 #if !defined(ENABLE_SUBPIXEL_LAYOUT)
1337 #if PLATFORM(CHROMIUM)
1338 #define ENABLE_SUBPIXEL_LAYOUT 1 
1339 #else
1340 #define ENABLE_SUBPIXEL_LAYOUT 0
1341 #endif
1342 #endif
1343
1344 #define ENABLE_DEBUG_WITH_BREAKPOINT 0
1345 #define ENABLE_SAMPLING_COUNTERS 0
1346 #define ENABLE_SAMPLING_FLAGS 0
1347 #define ENABLE_SAMPLING_REGIONS 0
1348 #define ENABLE_OPCODE_SAMPLING 0
1349 #define ENABLE_CODEBLOCK_SAMPLING 0
1350 #if ENABLE(CODEBLOCK_SAMPLING) && !ENABLE(OPCODE_SAMPLING)
1351 #error "CODEBLOCK_SAMPLING requires OPCODE_SAMPLING"
1352 #endif
1353 #if ENABLE(OPCODE_SAMPLING) || ENABLE(SAMPLING_FLAGS) || ENABLE(SAMPLING_REGIONS)
1354 #define ENABLE_SAMPLING_THREAD 1
1355 #endif
1356
1357 #if !defined(ENABLE_TEXT_CARET) && !PLATFORM(IOS)
1358 #define ENABLE_TEXT_CARET 1
1359 #endif
1360
1361 #if !defined(WTF_USE_JSVALUE64) && !defined(WTF_USE_JSVALUE32_64)
1362 #if (CPU(X86_64) && (OS(UNIX) || OS(WINDOWS))) \
1363     || (CPU(IA64) && !CPU(IA64_32)) \
1364     || CPU(ALPHA) \
1365     || CPU(SPARC64) \
1366     || CPU(S390X) \
1367     || CPU(PPC64)
1368 #define WTF_USE_JSVALUE64 1
1369 #else
1370 #define WTF_USE_JSVALUE32_64 1
1371 #endif
1372 #endif /* !defined(WTF_USE_JSVALUE64) && !defined(WTF_USE_JSVALUE32_64) */
1373
1374 /* Disable the JIT on versions of GCC prior to 4.1 */
1375 #if !defined(ENABLE_JIT) && COMPILER(GCC) && !GCC_VERSION_AT_LEAST(4, 1, 0)
1376 #define ENABLE_JIT 0
1377 #endif
1378
1379 /* JIT is not implemented for Windows 64-bit */
1380 #if !defined(ENABLE_JIT) && OS(WINDOWS) && CPU(X86_64)
1381 #define ENABLE_JIT 0
1382 #endif
1383
1384 #if !defined(ENABLE_JIT) && CPU(SH4) && PLATFORM(QT)
1385 #define ENABLE_JIT 1
1386 #endif
1387
1388 /* The JIT is enabled by default on all x86, x86-64, ARM & MIPS platforms. */
1389 #if !defined(ENABLE_JIT) \
1390     && (CPU(X86) || CPU(X86_64) || CPU(ARM) || CPU(MIPS)) \
1391     && (OS(DARWIN) || !COMPILER(GCC) || GCC_VERSION_AT_LEAST(4, 1, 0)) \
1392     && !OS(WINCE) \
1393     && !OS(QNX)
1394 #define ENABLE_JIT 1
1395 #endif
1396
1397 /* On some of the platforms where we have a JIT, we want to also have the 
1398    low-level interpreter. */
1399 #if !defined(ENABLE_LLINT) && ENABLE(JIT) && (OS(DARWIN) && !PLATFORM(QT)) && (CPU(X86) || CPU(X86_64) || CPU(ARM_THUMB2))
1400 #define ENABLE_LLINT 1
1401 #endif
1402
1403 #if !defined(ENABLE_DFG_JIT) && ENABLE(JIT)
1404 /* Enable the DFG JIT on X86 and X86_64.  Only tested on Mac and GNU/Linux. */
1405 #if (CPU(X86) || CPU(X86_64)) && (PLATFORM(MAC) || OS(LINUX)) && !OS(TIZEN)
1406 #define ENABLE_DFG_JIT 1
1407 #endif
1408 /* Enable the DFG JIT on ARMv7.  Only tested on iOS. */
1409 #if CPU(ARM_THUMB2) && PLATFORM(IOS)
1410 #define ENABLE_DFG_JIT 1
1411 #endif
1412 #endif
1413
1414 /* Profiling of types and values used by JIT code. DFG_JIT depends on it, but you
1415    can enable it manually with DFG turned off if you want to use it as a standalone
1416    profiler. In that case, you probably want to also enable VERBOSE_VALUE_PROFILE
1417    below. */
1418 #if !defined(ENABLE_VALUE_PROFILER) && ENABLE(DFG_JIT)
1419 #define ENABLE_VALUE_PROFILER 1
1420 #endif
1421
1422 #if !defined(ENABLE_VERBOSE_VALUE_PROFILE) && ENABLE(VALUE_PROFILER)
1423 #define ENABLE_VERBOSE_VALUE_PROFILE 0
1424 #endif
1425
1426 #if !defined(ENABLE_SIMPLE_HEAP_PROFILING)
1427 #define ENABLE_SIMPLE_HEAP_PROFILING 0
1428 #endif
1429
1430 /* Counts uses of write barriers using sampling counters. Be sure to also
1431    set ENABLE_SAMPLING_COUNTERS to 1. */
1432 #if !defined(ENABLE_WRITE_BARRIER_PROFILING)
1433 #define ENABLE_WRITE_BARRIER_PROFILING 0
1434 #endif
1435
1436 /* Ensure that either the JIT or the interpreter has been enabled. */
1437 #if !defined(ENABLE_CLASSIC_INTERPRETER) && !ENABLE(JIT)
1438 #define ENABLE_CLASSIC_INTERPRETER 1
1439 #endif
1440 #if !(ENABLE(JIT) || ENABLE(CLASSIC_INTERPRETER))
1441 #error You have to have at least one execution model enabled to build JSC
1442 #endif
1443
1444 /* Configure the JIT */
1445 #if CPU(X86) && COMPILER(MSVC)
1446 #define JSC_HOST_CALL __fastcall
1447 #elif CPU(X86) && COMPILER(GCC)
1448 #define JSC_HOST_CALL __attribute__ ((fastcall))
1449 #else
1450 #define JSC_HOST_CALL
1451 #endif
1452
1453 /* Configure the interpreter */
1454 #if COMPILER(GCC) || (RVCT_VERSION_AT_LEAST(4, 0, 0, 0) && defined(__GNUC__))
1455 #define HAVE_COMPUTED_GOTO 1
1456 #endif
1457 #if HAVE(COMPUTED_GOTO) && ENABLE(CLASSIC_INTERPRETER)
1458 #define ENABLE_COMPUTED_GOTO_CLASSIC_INTERPRETER 1
1459 #endif
1460
1461 /* Regular Expression Tracing - Set to 1 to trace RegExp's in jsc.  Results dumped at exit */
1462 #define ENABLE_REGEXP_TRACING 0
1463
1464 /* Yet Another Regex Runtime - turned on by default for JIT enabled ports. */
1465 #if !defined(ENABLE_YARR_JIT) && ENABLE(JIT) && !PLATFORM(CHROMIUM)
1466 #define ENABLE_YARR_JIT 1
1467
1468 /* Setting this flag compares JIT results with interpreter results. */
1469 #define ENABLE_YARR_JIT_DEBUG 0
1470 #endif
1471
1472 #if ENABLE(JIT) || ENABLE(YARR_JIT)
1473 #define ENABLE_ASSEMBLER 1
1474 #endif
1475
1476 /* Pick which allocator to use; we only need an executable allocator if the assembler is compiled in.
1477    On x86-64 we use a single fixed mmap, on other platforms we mmap on demand. */
1478 #if ENABLE(ASSEMBLER)
1479 #if CPU(X86_64) || PLATFORM(IOS)
1480 #define ENABLE_EXECUTABLE_ALLOCATOR_FIXED 1
1481 #else
1482 #define ENABLE_EXECUTABLE_ALLOCATOR_DEMAND 1
1483 #endif
1484 #endif
1485
1486 #if !defined(ENABLE_PAN_SCROLLING) && OS(WINDOWS)
1487 #define ENABLE_PAN_SCROLLING 1
1488 #endif
1489
1490 /* Use the QXmlStreamReader implementation for XMLDocumentParser */
1491 /* Use the QXmlQuery implementation for XSLTProcessor */
1492 #if PLATFORM(QT)
1493 #if !USE(LIBXML2)
1494 #define WTF_USE_QXMLSTREAM 1
1495 #define WTF_USE_QXMLQUERY 1
1496 #endif
1497 #endif
1498
1499 #if PLATFORM(MAC)
1500 /* Complex text framework */
1501 #ifndef BUILDING_ON_LEOPARD
1502 #define WTF_USE_ATSUI 0
1503 #define WTF_USE_CORE_TEXT 1
1504 #else
1505 #define WTF_USE_ATSUI 1
1506 #define WTF_USE_CORE_TEXT 0
1507 #endif
1508 #endif
1509
1510 /* Accelerated compositing */
1511 #if PLATFORM(MAC) || PLATFORM(IOS) || PLATFORM(QT) || (PLATFORM(WIN) && !OS(WINCE) && !PLATFORM(WIN_CAIRO))
1512 #define WTF_USE_ACCELERATED_COMPOSITING 1
1513 #endif
1514
1515 #if PLATFORM(MAC) || PLATFORM(IOS)
1516 #define ENABLE_CSS_IMAGE_SET 1
1517 #endif
1518
1519 /* Compositing on the UI-process in WebKit2 */
1520 #if PLATFORM(QT)
1521 #define WTF_USE_UI_SIDE_COMPOSITING 1
1522 #endif
1523
1524 #if (PLATFORM(MAC) && !defined(BUILDING_ON_LEOPARD)) || PLATFORM(IOS)
1525 #define WTF_USE_PROTECTION_SPACE_AUTH_CALLBACK 1
1526 #endif
1527
1528 #if !ENABLE(NETSCAPE_PLUGIN_API) || (ENABLE(NETSCAPE_PLUGIN_API) && ((OS(UNIX) && (PLATFORM(QT) || PLATFORM(WX))) || PLATFORM(GTK) || PLATFORM(EFL)))
1529 #define ENABLE_PLUGIN_PACKAGE_SIMPLE_HASH 1
1530 #endif
1531
1532 #if PLATFORM(MAC) && !defined(BUILDING_ON_LEOPARD) && !defined(BUILDING_ON_SNOW_LEOPARD) && !defined(BUILDING_ON_LION)
1533 #define ENABLE_THREADED_SCROLLING 1
1534 #endif
1535
1536 /* Set up a define for a common error that is intended to cause a build error -- thus the space after Error. */
1537 #define WTF_PLATFORM_CFNETWORK Error USE_macro_should_be_used_with_CFNETWORK
1538
1539 /* FIXME: Eventually we should enable this for all platforms and get rid of the define. */
1540 #if PLATFORM(IOS) || PLATFORM(MAC) || PLATFORM(WIN) || PLATFORM(QT) || PLATFORM(GTK) || PLATFORM(EFL)
1541 #define WTF_USE_PLATFORM_STRATEGIES 1
1542 #endif
1543
1544 #if PLATFORM(WIN)
1545 #define WTF_USE_CROSS_PLATFORM_CONTEXT_MENUS 1
1546 #endif
1547
1548 #if PLATFORM(MAC) && HAVE(ACCESSIBILITY)
1549 #define WTF_USE_ACCESSIBILITY_CONTEXT_MENUS 1
1550 #endif
1551
1552 #if CPU(ARM_THUMB2)
1553 #define ENABLE_BRANCH_COMPACTION 1
1554 #endif
1555
1556 #if !defined(ENABLE_THREADING_LIBDISPATCH) && HAVE(DISPATCH_H)
1557 #define ENABLE_THREADING_LIBDISPATCH 1
1558 #elif !defined(ENABLE_THREADING_OPENMP) && defined(_OPENMP)
1559 #define ENABLE_THREADING_OPENMP 1
1560 #elif !defined(THREADING_GENERIC)
1561 #define ENABLE_THREADING_GENERIC 1
1562 #endif
1563
1564 #if ENABLE(GLIB_SUPPORT)
1565 #include <wtf/gobject/GTypedefs.h>
1566 #endif
1567
1568 /* FIXME: This define won't be needed once #27551 is fully landed. However, 
1569    since most ports try to support sub-project independence, adding new headers
1570    to WTF causes many ports to break, and so this way we can address the build
1571    breakages one port at a time. */
1572 #if !defined(WTF_USE_EXPORT_MACROS) && (PLATFORM(MAC) || PLATFORM(QT) || PLATFORM(WX))
1573 #define WTF_USE_EXPORT_MACROS 1
1574 #endif
1575
1576 #if (PLATFORM(QT) && !OS(DARWIN)) || PLATFORM(GTK) || PLATFORM(EFL)
1577 #define WTF_USE_UNIX_DOMAIN_SOCKETS 1
1578 #endif
1579
1580 #if !defined(ENABLE_COMPARE_AND_SWAP) && COMPILER(GCC) && (CPU(X86) || CPU(X86_64) || CPU(ARM_THUMB2))
1581 #define ENABLE_COMPARE_AND_SWAP 1
1582 #endif
1583
1584 #if !defined(ENABLE_PARALLEL_GC) && (PLATFORM(MAC) || PLATFORM(IOS) || PLATFORM(QT) || PLATFORM(BLACKBERRY)) && ENABLE(COMPARE_AND_SWAP)
1585 #define ENABLE_PARALLEL_GC 1
1586 #endif
1587
1588 #if !defined(ENABLE_GC_VALIDATION) && !defined(NDEBUG)
1589 #define ENABLE_GC_VALIDATION 1
1590 #endif
1591
1592 #if PLATFORM(MAC) && !defined(BUILDING_ON_LEOPARD) && !defined(BUILDING_ON_SNOW_LEOPARD)
1593 #define WTF_USE_AVFOUNDATION 1
1594 #endif
1595
1596 #if PLATFORM(MAC) && !defined(BUILDING_ON_LEOPARD) && !defined(BUILDING_ON_SNOW_LEOPARD) && !defined(BUILDING_ON_LION)
1597 #define WTF_USE_COREMEDIA 1
1598 #endif
1599
1600 #if PLATFORM(MAC) || PLATFORM(GTK) || PLATFORM(EFL) || (PLATFORM(WIN) && !OS(WINCE) && !PLATFORM(WIN_CAIRO)) || PLATFORM(QT) || PLATFORM(BLACKBERRY)
1601 #define WTF_USE_REQUEST_ANIMATION_FRAME_TIMER 1
1602 #endif
1603
1604 #if PLATFORM(MAC) || PLATFORM(BLACKBERRY)
1605 #define WTF_USE_REQUEST_ANIMATION_FRAME_DISPLAY_MONITOR 1
1606 #endif
1607
1608 #if PLATFORM(MAC) && !defined(BUILDING_ON_LEOPARD) && !defined(BUILDING_ON_SNOW_LEOPARD)
1609 #define HAVE_INVERTED_WHEEL_EVENTS 1
1610 #endif
1611
1612 #if PLATFORM(MAC)
1613 #define WTF_USE_COREAUDIO 1
1614 #endif
1615
1616 #if !defined(WTF_USE_V8) && PLATFORM(CHROMIUM)
1617 #define WTF_USE_V8 1
1618 #endif
1619
1620 /* Not using V8 implies using JSC and vice versa */
1621 #if !USE(V8)
1622 #define WTF_USE_JSC 1
1623 #endif
1624
1625 #if ENABLE(NOTIFICATIONS) && PLATFORM(MAC)
1626 #define ENABLE_TEXT_NOTIFICATIONS_ONLY 1
1627 #endif
1628
1629 #if !defined(WTF_USE_ZLIB) && !PLATFORM(QT)
1630 #define WTF_USE_ZLIB 1
1631 #endif
1632
1633 #endif /* WTF_Platform_h */