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

Side by Side Diff: Source/core/css/MediaValues.cpp

Issue 240063003: Revert "A sizes attribute parser" (https://codereview.chromium.org/224733011) (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Created 6 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « Source/core/css/MediaValues.h ('k') | Source/core/css/MediaValuesCached.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2014 The Chromium Authors. All rights reserved. 1 // Copyright 2014 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 "config.h" 5 #include "config.h"
6 #include "core/css/MediaValues.h" 6 #include "core/css/MediaValues.h"
7 7
8 #include "core/css/MediaValuesCached.h"
9 #include "core/css/MediaValuesDynamic.h"
10 #include "core/dom/Document.h" 8 #include "core/dom/Document.h"
11 #include "core/dom/Element.h" 9 #include "core/dom/Element.h"
12 #include "core/frame/FrameHost.h" 10 #include "core/frame/FrameHost.h"
13 #include "core/frame/FrameView.h" 11 #include "core/frame/FrameView.h"
14 #include "core/frame/LocalFrame.h" 12 #include "core/frame/LocalFrame.h"
15 #include "core/frame/Settings.h" 13 #include "core/frame/Settings.h"
16 #include "core/html/imports/HTMLImportsController.h" 14 #include "core/html/imports/HTMLImportsController.h"
17 #include "core/page/Page.h" 15 #include "core/page/Page.h"
18 #include "core/rendering/RenderObject.h" 16 #include "core/rendering/RenderObject.h"
19 #include "core/rendering/RenderView.h" 17 #include "core/rendering/RenderView.h"
20 #include "core/rendering/compositing/RenderLayerCompositor.h" 18 #include "core/rendering/compositing/RenderLayerCompositor.h"
21 #include "core/rendering/style/RenderStyle.h" 19 #include "core/rendering/style/RenderStyle.h"
22 #include "platform/PlatformScreen.h" 20 #include "platform/PlatformScreen.h"
23 21
24 namespace WebCore { 22 namespace WebCore {
25 23
26 Document* MediaValues::getExecutingDocument(Document& document) 24 static int calculateViewportWidth(LocalFrame* frame, RenderStyle* style)
27 {
28 Document* executingDocument = document.importsController() ? document.import sController()->master() : &document;
29 ASSERT(executingDocument);
30 ASSERT(executingDocument->renderer());
31 return executingDocument;
32 }
33
34 int MediaValues::calculateViewportWidth(LocalFrame* frame, RenderStyle* style) c onst
35 { 25 {
36 ASSERT(frame && frame->view() && style); 26 ASSERT(frame && frame->view() && style);
37 int viewportWidth = frame->view()->layoutSize(IncludeScrollbars).width(); 27 int viewportWidth = frame->view()->layoutSize(IncludeScrollbars).width();
38 return adjustForAbsoluteZoom(viewportWidth, style); 28 return adjustForAbsoluteZoom(viewportWidth, style);
39 } 29 }
40 30
41 int MediaValues::calculateViewportHeight(LocalFrame* frame, RenderStyle* style) const 31 static int calculateViewportHeight(LocalFrame* frame, RenderStyle* style)
42 { 32 {
43 ASSERT(frame && frame->view() && style); 33 ASSERT(frame && frame->view() && style);
44 int viewportHeight = frame->view()->layoutSize(IncludeScrollbars).height(); 34 int viewportHeight = frame->view()->layoutSize(IncludeScrollbars).height();
45 return adjustForAbsoluteZoom(viewportHeight, style); 35 return adjustForAbsoluteZoom(viewportHeight, style);
46 } 36 }
47 37
48 int MediaValues::calculateDeviceWidth(LocalFrame* frame) const 38 static int calculateDeviceWidth(LocalFrame* frame)
49 { 39 {
50 ASSERT(frame && frame->view() && frame->settings() && frame->host()); 40 ASSERT(frame && frame->view() && frame->settings() && frame->host());
51 int deviceWidth = static_cast<int>(screenRect(frame->view()).width()); 41 int deviceWidth = static_cast<int>(screenRect(frame->view()).width());
52 if (frame->settings()->reportScreenSizeInPhysicalPixelsQuirk()) 42 if (frame->settings()->reportScreenSizeInPhysicalPixelsQuirk())
53 deviceWidth = lroundf(deviceWidth * frame->host()->deviceScaleFactor()); 43 deviceWidth = lroundf(deviceWidth * frame->host()->deviceScaleFactor());
54 return deviceWidth; 44 return deviceWidth;
55 } 45 }
56 46
57 int MediaValues::calculateDeviceHeight(LocalFrame* frame) const 47 static int calculateDeviceHeight(LocalFrame* frame)
58 { 48 {
59 ASSERT(frame && frame->view() && frame->settings() && frame->host()); 49 ASSERT(frame && frame->view() && frame->settings() && frame->host());
60 int deviceHeight = static_cast<int>(screenRect(frame->view()).height()); 50 int deviceHeight = static_cast<int>(screenRect(frame->view()).height());
61 if (frame->settings()->reportScreenSizeInPhysicalPixelsQuirk()) 51 if (frame->settings()->reportScreenSizeInPhysicalPixelsQuirk())
62 deviceHeight = lroundf(deviceHeight * frame->host()->deviceScaleFactor() ); 52 deviceHeight = lroundf(deviceHeight * frame->host()->deviceScaleFactor() );
63 return deviceHeight; 53 return deviceHeight;
64 } 54 }
65 55
66 bool MediaValues::calculateStrictMode(LocalFrame* frame) const 56 static bool calculateStrictMode(LocalFrame* frame)
67 { 57 {
68 ASSERT(frame && frame->document()); 58 ASSERT(frame && frame->document());
69 return !frame->document()->inQuirksMode(); 59 return !frame->document()->inQuirksMode();
70 } 60 }
71 61
72 float MediaValues::calculateDevicePixelRatio(LocalFrame* frame) const 62 static float calculateDevicePixelRatio(LocalFrame* frame)
73 { 63 {
74 return frame->devicePixelRatio(); 64 return frame->devicePixelRatio();
75 } 65 }
76 66
77 int MediaValues::calculateColorBitsPerComponent(LocalFrame* frame) const 67 static int calculateColorBitsPerComponent(LocalFrame* frame)
78 { 68 {
79 ASSERT(frame && frame->page() && frame->page()->mainFrame()); 69 ASSERT(frame && frame->page() && frame->page()->mainFrame());
80 if (screenIsMonochrome(frame->page()->mainFrame()->view())) 70 if (screenIsMonochrome(frame->page()->mainFrame()->view()))
81 return 0; 71 return 0;
82 return screenDepthPerComponent(frame->view()); 72 return screenDepthPerComponent(frame->view());
83 } 73 }
84 74
85 int MediaValues::calculateMonochromeBitsPerComponent(LocalFrame* frame) const 75 static int calculateMonochromeBitsPerComponent(LocalFrame* frame)
86 { 76 {
87 ASSERT(frame && frame->page() && frame->page()->mainFrame()); 77 ASSERT(frame && frame->page() && frame->page()->mainFrame());
88 if (screenIsMonochrome(frame->page()->mainFrame()->view())) 78 if (screenIsMonochrome(frame->page()->mainFrame()->view()))
89 return screenDepthPerComponent(frame->view()); 79 return screenDepthPerComponent(frame->view());
90 return 0; 80 return 0;
91 } 81 }
92 82
93 int MediaValues::calculateDefaultFontSize(RenderStyle* style) const 83 static int calculateDefaultFontSize(RenderStyle* style)
94 { 84 {
95 return style->fontDescription().specifiedSize(); 85 return style->fontDescription().specifiedSize();
96 } 86 }
97 87
98 int MediaValues::calculateComputedFontSize(RenderStyle* style) const 88 static bool calculateScanMediaType(LocalFrame* frame)
99 {
100 return style->fontDescription().computedSize();
101 }
102
103 bool MediaValues::calculateHasXHeight(RenderStyle* style) const
104 {
105 return style->fontMetrics().hasXHeight();
106 }
107
108 double MediaValues::calculateXHeight(RenderStyle* style) const
109 {
110 return style->fontMetrics().xHeight();
111 }
112
113 double MediaValues::calculateZeroWidth(RenderStyle* style) const
114 {
115 return style->fontMetrics().zeroWidth();
116 }
117
118 bool MediaValues::calculateScanMediaType(LocalFrame* frame) const
119 { 89 {
120 ASSERT(frame && frame->view()); 90 ASSERT(frame && frame->view());
121 // Scan only applies to 'tv' media. 91 // Scan only applies to 'tv' media.
122 return equalIgnoringCase(frame->view()->mediaType(), "tv"); 92 return equalIgnoringCase(frame->view()->mediaType(), "tv");
123 } 93 }
124 94
125 bool MediaValues::calculateScreenMediaType(LocalFrame* frame) const 95 static bool calculateScreenMediaType(LocalFrame* frame)
126 { 96 {
127 ASSERT(frame && frame->view()); 97 ASSERT(frame && frame->view());
128 return equalIgnoringCase(frame->view()->mediaType(), "screen"); 98 return equalIgnoringCase(frame->view()->mediaType(), "screen");
129 } 99 }
130 100
131 bool MediaValues::calculatePrintMediaType(LocalFrame* frame) const 101 static bool calculatePrintMediaType(LocalFrame* frame)
132 { 102 {
133 ASSERT(frame && frame->view()); 103 ASSERT(frame && frame->view());
134 return equalIgnoringCase(frame->view()->mediaType(), "print"); 104 return equalIgnoringCase(frame->view()->mediaType(), "print");
135 } 105 }
136 106
137 bool MediaValues::calculateThreeDEnabled(LocalFrame* frame) const 107 static bool calculateThreeDEnabled(LocalFrame* frame)
138 { 108 {
139 ASSERT(frame && frame->contentRenderer() && frame->contentRenderer()->compos itor()); 109 ASSERT(frame && frame->contentRenderer() && frame->contentRenderer()->compos itor());
140 bool threeDEnabled = false; 110 bool threeDEnabled = false;
141 if (RenderView* view = frame->contentRenderer()) 111 if (RenderView* view = frame->contentRenderer())
142 threeDEnabled = view->compositor()->canRender3DTransforms(); 112 threeDEnabled = view->compositor()->canRender3DTransforms();
143 return threeDEnabled; 113 return threeDEnabled;
144 } 114 }
145 115
146 MediaValues::PointerDeviceType MediaValues::calculateLeastCapablePrimaryPointerD eviceType(LocalFrame* frame) const 116 static MediaValues::PointerDeviceType calculateLeastCapablePrimaryPointerDeviceT ype(LocalFrame* frame)
147 { 117 {
148 ASSERT(frame && frame->settings()); 118 ASSERT(frame && frame->settings());
149 if (frame->settings()->deviceSupportsTouch()) 119 if (frame->settings()->deviceSupportsTouch())
150 return MediaValues::TouchPointer; 120 return MediaValues::TouchPointer;
151 121
152 // FIXME: We should also try to determine if we know we have a mouse. 122 // FIXME: We should also try to determine if we know we have a mouse.
153 // When we do this, we'll also need to differentiate between known not to 123 // When we do this, we'll also need to differentiate between known not to
154 // have mouse or touch screen (NoPointer) and unknown (UnknownPointer). 124 // have mouse or touch screen (NoPointer) and unknown (UnknownPointer).
155 // We could also take into account other preferences like accessibility 125 // We could also take into account other preferences like accessibility
156 // settings to decide which of the available pointers should be considered 126 // settings to decide which of the available pointers should be considered
157 // "primary". 127 // "primary".
158 128
159 return MediaValues::UnknownPointer; 129 return MediaValues::UnknownPointer;
160 } 130 }
161 131
132 PassRefPtr<MediaValues> MediaValues::create(MediaValuesMode mode,
133 int viewportWidth,
134 int viewportHeight,
135 int deviceWidth,
136 int deviceHeight,
137 float devicePixelRatio,
138 int colorBitsPerComponent,
139 int monochromeBitsPerComponent,
140 PointerDeviceType pointer,
141 int defaultFontSize,
142 bool threeDEnabled,
143 bool scanMediaType,
144 bool screenMediaType,
145 bool printMediaType,
146 bool strictMode)
147 {
148 ASSERT(mode == CachingMode);
149 RefPtr<MediaValues> mediaValues = adoptRef(new MediaValues(0, nullptr, mode) );
150 mediaValues->m_viewportWidth = viewportWidth;
151 mediaValues->m_viewportHeight = viewportHeight;
152 mediaValues->m_deviceWidth = deviceWidth;
153 mediaValues->m_deviceHeight = deviceHeight;
154 mediaValues->m_devicePixelRatio = devicePixelRatio;
155 mediaValues->m_colorBitsPerComponent = colorBitsPerComponent;
156 mediaValues->m_monochromeBitsPerComponent = monochromeBitsPerComponent;
157 mediaValues->m_pointer = pointer;
158 mediaValues->m_defaultFontSize = defaultFontSize;
159 mediaValues->m_threeDEnabled = threeDEnabled;
160 mediaValues->m_scanMediaType = scanMediaType;
161 mediaValues->m_screenMediaType = screenMediaType;
162 mediaValues->m_printMediaType = printMediaType;
163 mediaValues->m_strictMode = strictMode;
164
165 return mediaValues;
166 }
167
168 PassRefPtr<MediaValues> MediaValues::create(LocalFrame* frame, RenderStyle* styl e, MediaValuesMode mode)
169 {
170 ASSERT(frame && style);
171 RefPtr<MediaValues> mediaValues;
172 mediaValues = adoptRef(new MediaValues(frame, style, mode));
173 if (mode == CachingMode) {
174 mediaValues->m_viewportWidth = calculateViewportWidth(frame, style);
175 mediaValues->m_viewportHeight = calculateViewportHeight(frame, style),
176 mediaValues->m_deviceWidth = calculateDeviceWidth(frame),
177 mediaValues->m_deviceHeight = calculateDeviceHeight(frame),
178 mediaValues->m_devicePixelRatio = calculateDevicePixelRatio(frame),
179 mediaValues->m_colorBitsPerComponent = calculateColorBitsPerComponent(fr ame),
180 mediaValues->m_monochromeBitsPerComponent = calculateMonochromeBitsPerCo mponent(frame),
181 mediaValues->m_pointer = calculateLeastCapablePrimaryPointerDeviceType(f rame),
182 mediaValues->m_defaultFontSize = calculateDefaultFontSize(style),
183 mediaValues->m_threeDEnabled = calculateThreeDEnabled(frame),
184 mediaValues->m_scanMediaType = calculateScanMediaType(frame),
185 mediaValues->m_screenMediaType = calculateScreenMediaType(frame),
186 mediaValues->m_printMediaType = calculatePrintMediaType(frame),
187 mediaValues->m_strictMode = calculateStrictMode(frame);
188
189 mediaValues->m_style.clear();
190 mediaValues->m_frame = 0;
191 }
192
193 return mediaValues;
194 }
195
196 PassRefPtr<MediaValues> MediaValues::create(Document* document, MediaValuesMode mode)
197 {
198 ASSERT(document);
199 Document* executingDocument = document->importsController() ? document->impo rtsController()->master() : document;
200 ASSERT(executingDocument->frame());
201 ASSERT(executingDocument->renderer());
202 ASSERT(executingDocument->renderer()->style());
203 LocalFrame* frame = executingDocument->frame();
204 RenderStyle* style = executingDocument->renderer()->style();
205
206 return MediaValues::create(frame, style, mode);
207 }
208
209 PassRefPtr<MediaValues> MediaValues::copy() const
210 {
211 ASSERT(m_mode == CachingMode && !m_style.get() && !m_frame);
212 RefPtr<MediaValues> mediaValues = adoptRef(new MediaValues(0, nullptr, m_mod e));
213 mediaValues->m_viewportWidth = m_viewportWidth;
214 mediaValues->m_viewportHeight = m_viewportHeight;
215 mediaValues->m_deviceWidth = m_deviceWidth;
216 mediaValues->m_deviceHeight = m_deviceHeight;
217 mediaValues->m_devicePixelRatio = m_devicePixelRatio;
218 mediaValues->m_colorBitsPerComponent = m_colorBitsPerComponent;
219 mediaValues->m_monochromeBitsPerComponent = m_monochromeBitsPerComponent;
220 mediaValues->m_pointer = m_pointer;
221 mediaValues->m_defaultFontSize = m_defaultFontSize;
222 mediaValues->m_threeDEnabled = m_threeDEnabled;
223 mediaValues->m_scanMediaType = m_scanMediaType;
224 mediaValues->m_screenMediaType = m_screenMediaType;
225 mediaValues->m_printMediaType = m_printMediaType;
226 mediaValues->m_strictMode = m_strictMode;
227
228 return mediaValues;
229 }
230
231 bool MediaValues::isSafeToSendToAnotherThread() const
232 {
233 return (!m_frame && !m_style && m_mode == CachingMode && hasOneRef());
234 }
235
236 int MediaValues::viewportWidth() const
237 {
238 if (m_mode == DynamicMode)
239 return calculateViewportWidth(m_frame, m_style.get());
240 return m_viewportWidth;
241 }
242
243 int MediaValues::viewportHeight() const
244 {
245 if (m_mode == DynamicMode)
246 return calculateViewportHeight(m_frame, m_style.get());
247 return m_viewportHeight;
248 }
249
250 int MediaValues::deviceWidth() const
251 {
252 if (m_mode == DynamicMode)
253 return calculateDeviceWidth(m_frame);
254 return m_deviceWidth;
255 }
256
257 int MediaValues::deviceHeight() const
258 {
259 if (m_mode == DynamicMode)
260 return calculateDeviceHeight(m_frame);
261 return m_deviceHeight;
262 }
263
264 float MediaValues::devicePixelRatio() const
265 {
266 if (m_mode == DynamicMode)
267 return calculateDevicePixelRatio(m_frame);
268 return m_devicePixelRatio;
269 }
270
271 int MediaValues::colorBitsPerComponent() const
272 {
273 if (m_mode == DynamicMode)
274 return calculateColorBitsPerComponent(m_frame);
275 return m_colorBitsPerComponent;
276 }
277
278 int MediaValues::monochromeBitsPerComponent() const
279 {
280 if (m_mode == DynamicMode)
281 return calculateMonochromeBitsPerComponent(m_frame);
282 return m_monochromeBitsPerComponent;
283 }
284
285 MediaValues::PointerDeviceType MediaValues::pointer() const
286 {
287 if (m_mode == DynamicMode)
288 return calculateLeastCapablePrimaryPointerDeviceType(m_frame);
289 return m_pointer;
290 }
291
292 int MediaValues::defaultFontSize() const
293 {
294 if (m_mode == DynamicMode)
295 return calculateDefaultFontSize(m_style.get());
296 return m_defaultFontSize;
297 }
298
299 bool MediaValues::threeDEnabled() const
300 {
301 if (m_mode == DynamicMode)
302 return calculateThreeDEnabled(m_frame);
303 return m_threeDEnabled;
304 }
305
306 bool MediaValues::scanMediaType() const
307 {
308 if (m_mode == DynamicMode)
309 return calculateScanMediaType(m_frame);
310 return m_scanMediaType;
311 }
312
313 bool MediaValues::screenMediaType() const
314 {
315 if (m_mode == DynamicMode)
316 return calculateScreenMediaType(m_frame);
317 return m_screenMediaType;
318 }
319
320 bool MediaValues::printMediaType() const
321 {
322 if (m_mode == DynamicMode)
323 return calculatePrintMediaType(m_frame);
324 return m_printMediaType;
325 }
326
327 bool MediaValues::strictMode() const
328 {
329 if (m_mode == DynamicMode)
330 return calculateStrictMode(m_frame);
331 return m_strictMode;
332 }
333
334 Document* MediaValues::document() const
335 {
336 if (!m_frame)
337 return 0;
338 return m_frame->document();
339 }
340
162 } // namespace 341 } // namespace
OLDNEW
« no previous file with comments | « Source/core/css/MediaValues.h ('k') | Source/core/css/MediaValuesCached.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698