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

Side by Side Diff: Source/core/dom/ViewportArguments.cpp

Issue 16826008: [css-device-adapt] Implemented spec changes. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@master
Patch Set: Corrected expectations for tests added after original upload. Created 7 years, 5 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
« no previous file with comments | « Source/core/css/resolver/ViewportStyleResolver.cpp ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org) 2 * Copyright (C) 1999 Lars Knoll (knoll@kde.org)
3 * (C) 1999 Antti Koivisto (koivisto@kde.org) 3 * (C) 1999 Antti Koivisto (koivisto@kde.org)
4 * (C) 2001 Dirk Mueller (mueller@kde.org) 4 * (C) 2001 Dirk Mueller (mueller@kde.org)
5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org) 5 * (C) 2006 Alexey Proskuryakov (ap@webkit.org)
6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv ed. 6 * Copyright (C) 2004, 2005, 2006, 2007, 2008, 2011 Apple Inc. All rights reserv ed.
7 * Copyright (C) 2008 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/) 7 * Copyright (C) 2008 Torch Mobile Inc. All rights reserved. (http://www.torchmo bile.com/)
8 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies) 8 * Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies)
9 * Copyright (C) 2012 Intel Corporation. All rights reserved. 9 * Copyright (C) 2012 Intel Corporation. All rights reserved.
10 * 10 *
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
107 ASSERT(resultMinWidth != ViewportArguments::ValueDeviceWidth); 107 ASSERT(resultMinWidth != ViewportArguments::ValueDeviceWidth);
108 ASSERT(resultMinWidth != ViewportArguments::ValueDeviceHeight); 108 ASSERT(resultMinWidth != ViewportArguments::ValueDeviceHeight);
109 ASSERT(resultMaxWidth != ViewportArguments::ValueDeviceWidth); 109 ASSERT(resultMaxWidth != ViewportArguments::ValueDeviceWidth);
110 ASSERT(resultMaxWidth != ViewportArguments::ValueDeviceHeight); 110 ASSERT(resultMaxWidth != ViewportArguments::ValueDeviceHeight);
111 ASSERT(resultMinHeight != ViewportArguments::ValueDeviceWidth); 111 ASSERT(resultMinHeight != ViewportArguments::ValueDeviceWidth);
112 ASSERT(resultMinHeight != ViewportArguments::ValueDeviceHeight); 112 ASSERT(resultMinHeight != ViewportArguments::ValueDeviceHeight);
113 ASSERT(resultMaxHeight != ViewportArguments::ValueDeviceWidth); 113 ASSERT(resultMaxHeight != ViewportArguments::ValueDeviceWidth);
114 ASSERT(resultMaxHeight != ViewportArguments::ValueDeviceHeight); 114 ASSERT(resultMaxHeight != ViewportArguments::ValueDeviceHeight);
115 115
116 if (resultMinWidth != ViewportArguments::ValueAuto || resultMaxWidth != ViewportArguments::ValueAuto) 116 if (resultMinWidth != ViewportArguments::ValueAuto || resultMaxWidth != ViewportArguments::ValueAuto)
117 resultWidth = compareIgnoringAuto(resultMinWidth, compareIgnoringAut o(resultMaxWidth, deviceSize.width(), min), max); 117 resultWidth = compareIgnoringAuto(resultMinWidth, compareIgnoringAut o(resultMaxWidth, initialViewportSize.width(), min), max);
118 118
119 if (resultMinHeight != ViewportArguments::ValueAuto || resultMaxHeight ! = ViewportArguments::ValueAuto) 119 if (resultMinHeight != ViewportArguments::ValueAuto || resultMaxHeight ! = ViewportArguments::ValueAuto)
120 resultHeight = compareIgnoringAuto(resultMinHeight, compareIgnoringA uto(resultMaxHeight, deviceSize.height(), min), max); 120 resultHeight = compareIgnoringAuto(resultMinHeight, compareIgnoringA uto(resultMaxHeight, initialViewportSize.height(), min), max);
121 121
122 if (resultMinZoom != ViewportArguments::ValueAuto && resultMaxZoom != Vi ewportArguments::ValueAuto) 122 if (resultMinZoom != ViewportArguments::ValueAuto && resultMaxZoom != Vi ewportArguments::ValueAuto)
123 resultMaxZoom = max(resultMinZoom, resultMaxZoom); 123 resultMaxZoom = max(resultMinZoom, resultMaxZoom);
124 124
125 if (resultZoom != ViewportArguments::ValueAuto) 125 if (resultZoom != ViewportArguments::ValueAuto)
126 resultZoom = compareIgnoringAuto(resultMinZoom, compareIgnoringAuto( resultMaxZoom, resultZoom, min), max); 126 resultZoom = compareIgnoringAuto(resultMinZoom, compareIgnoringAuto( resultMaxZoom, resultZoom, min), max);
127 127
128 if (resultWidth == ViewportArguments::ValueAuto && resultZoom == Viewpor tArguments::ValueAuto) 128 if (resultWidth == ViewportArguments::ValueAuto && (resultHeight == View portArguments::ValueAuto || !initialViewportSize.height()))
129 resultWidth = deviceSize.width(); 129 resultWidth = initialViewportSize.width();
130 130
131 if (resultWidth == ViewportArguments::ValueAuto && resultHeight == Viewp ortArguments::ValueAuto) 131 if (resultWidth == ViewportArguments::ValueAuto) {
132 resultWidth = deviceSize.width() / resultZoom; 132 ASSERT(initialViewportSize.height()); // If height is 0, resultWidth should be resolved above.
133 133 resultWidth = resultHeight * initialViewportSize.width() / initialVi ewportSize.height();
134 if (resultWidth == ViewportArguments::ValueAuto)
135 resultWidth = resultHeight * deviceSize.width() / deviceSize.height( );
136
137 if (resultHeight == ViewportArguments::ValueAuto)
138 resultHeight = resultWidth * deviceSize.height() / deviceSize.width( );
139
140 if (resultZoom != ViewportArguments::ValueAuto || resultMaxZoom != Viewp ortArguments::ValueAuto) {
141 resultWidth = compareIgnoringAuto(resultWidth, deviceSize.width() / compareIgnoringAuto(resultZoom, resultMaxZoom, min), max);
142 resultHeight = compareIgnoringAuto(resultHeight, deviceSize.height() / compareIgnoringAuto(resultZoom, resultMaxZoom, min), max);
143 } 134 }
144 135
145 resultWidth = max<float>(1, resultWidth); 136 if (resultHeight == ViewportArguments::ValueAuto) {
146 resultHeight = max<float>(1, resultHeight); 137 if (!initialViewportSize.width())
138 resultHeight = initialViewportSize.height();
139 else
140 resultHeight = resultWidth * initialViewportSize.height() / init ialViewportSize.width();
141 }
147 } 142 }
148 143
149 if (type != ViewportArguments::CSSDeviceAdaptation && type != ViewportArgume nts::Implicit) { 144 if (type != ViewportArguments::CSSDeviceAdaptation && type != ViewportArgume nts::Implicit) {
150 // Clamp values to a valid range, but not for @viewport since is 145 // Clamp values to a valid range, but not for @viewport since is
151 // not mandated by the specification. 146 // not mandated by the specification.
152 resultWidth = clampLengthValue(resultWidth); 147 resultWidth = clampLengthValue(resultWidth);
153 resultHeight = clampLengthValue(resultHeight); 148 resultHeight = clampLengthValue(resultHeight);
154 resultZoom = clampScaleValue(resultZoom); 149 resultZoom = clampScaleValue(resultZoom);
155 resultMinZoom = clampScaleValue(resultMinZoom); 150 resultMinZoom = clampScaleValue(resultMinZoom);
156 resultMaxZoom = clampScaleValue(resultMaxZoom); 151 resultMaxZoom = clampScaleValue(resultMaxZoom);
(...skipping 11 matching lines...) Expand all
168 result.maximumScale = float(5.0); 163 result.maximumScale = float(5.0);
169 result.minimumScale = min(float(5.0), result.minimumScale); 164 result.minimumScale = min(float(5.0), result.minimumScale);
170 } else 165 } else
171 result.maximumScale = resultMaxZoom; 166 result.maximumScale = resultMaxZoom;
172 result.maximumScale = max(result.minimumScale, result.maximumScale); 167 result.maximumScale = max(result.minimumScale, result.maximumScale);
173 168
174 // Resolve initial-scale value. 169 // Resolve initial-scale value.
175 result.initialScale = resultZoom; 170 result.initialScale = resultZoom;
176 if (resultZoom == ViewportArguments::ValueAuto) { 171 if (resultZoom == ViewportArguments::ValueAuto) {
177 result.initialScale = initialViewportSize.width() / defaultWidth; 172 result.initialScale = initialViewportSize.width() / defaultWidth;
178 if (resultWidth != ViewportArguments::ValueAuto) 173 if (resultWidth != ViewportArguments::ValueAuto && resultWidth > 0)
179 result.initialScale = initialViewportSize.width() / resultWidth; 174 result.initialScale = initialViewportSize.width() / resultWidth;
180 if (resultHeight != ViewportArguments::ValueAuto) { 175 if (resultHeight != ViewportArguments::ValueAuto && resultHeight > 0) {
181 // if 'auto', the initial-scale will be negative here and thus ignor ed. 176 // if 'auto', the initial-scale will be negative here and thus ignor ed.
182 result.initialScale = max<float>(result.initialScale, initialViewpor tSize.height() / resultHeight); 177 result.initialScale = max<float>(result.initialScale, initialViewpor tSize.height() / resultHeight);
183 } 178 }
184 } 179 }
185 180
186 // Constrain initial-scale value to minimum-scale/maximum-scale range. 181 // Constrain initial-scale value to minimum-scale/maximum-scale range.
187 result.initialScale = min(result.maximumScale, max(result.minimumScale, resu lt.initialScale)); 182 result.initialScale = min(result.maximumScale, max(result.minimumScale, resu lt.initialScale));
188 183
189 // Resolve width value. 184 // Resolve width value.
190 if (resultWidth == ViewportArguments::ValueAuto) { 185 if (resultWidth == ViewportArguments::ValueAuto) {
(...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after
397 message.replace("%replacement2", replacement2); 392 message.replace("%replacement2", replacement2);
398 393
399 if ((errorCode == UnrecognizedViewportArgumentValueError || errorCode == Tru ncatedViewportArgumentValueError) && replacement1.find(';') != WTF::notFound) 394 if ((errorCode == UnrecognizedViewportArgumentValueError || errorCode == Tru ncatedViewportArgumentValueError) && replacement1.find(';') != WTF::notFound)
400 message.append(" Note that ';' is not a separator in viewport values. Th e list should be comma-separated."); 395 message.append(" Note that ';' is not a separator in viewport values. Th e list should be comma-separated.");
401 396
402 // FIXME: This message should be moved off the console once a solution to ht tps://bugs.webkit.org/show_bug.cgi?id=103274 exists. 397 // FIXME: This message should be moved off the console once a solution to ht tps://bugs.webkit.org/show_bug.cgi?id=103274 exists.
403 document->addConsoleMessage(RenderingMessageSource, viewportErrorMessageLeve l(errorCode), message); 398 document->addConsoleMessage(RenderingMessageSource, viewportErrorMessageLeve l(errorCode), message);
404 } 399 }
405 400
406 } // namespace WebCore 401 } // namespace WebCore
OLDNEW
« no previous file with comments | « Source/core/css/resolver/ViewportStyleResolver.cpp ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698