OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2012-2013 Intel Corporation. All rights reserved. | 2 * Copyright (C) 2012-2013 Intel Corporation. All rights reserved. |
3 * | 3 * |
4 * Redistribution and use in source and binary forms, with or without | 4 * Redistribution and use in source and binary forms, with or without |
5 * modification, are permitted provided that the following conditions | 5 * modification, are permitted provided that the following conditions |
6 * are met: | 6 * are met: |
7 * | 7 * |
8 * 1. Redistributions of source code must retain the above | 8 * 1. Redistributions of source code must retain the above |
9 * copyright notice, this list of conditions and the following | 9 * copyright notice, this list of conditions and the following |
10 * disclaimer. | 10 * disclaimer. |
(...skipping 22 matching lines...) Expand all Loading... |
33 #include "CSSValueKeywords.h" | 33 #include "CSSValueKeywords.h" |
34 #include "core/css/StylePropertySet.h" | 34 #include "core/css/StylePropertySet.h" |
35 #include "core/css/StyleRule.h" | 35 #include "core/css/StyleRule.h" |
36 #include "core/dom/Document.h" | 36 #include "core/dom/Document.h" |
37 #include "core/dom/NodeRenderStyle.h" | 37 #include "core/dom/NodeRenderStyle.h" |
38 #include "core/dom/ViewportArguments.h" | 38 #include "core/dom/ViewportArguments.h" |
39 | 39 |
40 namespace WebCore { | 40 namespace WebCore { |
41 | 41 |
42 ViewportStyleResolver::ViewportStyleResolver(Document* document) | 42 ViewportStyleResolver::ViewportStyleResolver(Document* document) |
43 : m_document(document) | 43 : m_document(document), |
| 44 m_hasAuthorStyle(false) |
44 { | 45 { |
45 ASSERT(m_document); | 46 ASSERT(m_document); |
46 } | 47 } |
47 | 48 |
48 ViewportStyleResolver::~ViewportStyleResolver() | 49 ViewportStyleResolver::~ViewportStyleResolver() |
49 { | 50 { |
50 } | 51 } |
51 | 52 |
52 void ViewportStyleResolver::addViewportRule(StyleRuleViewport* viewportRule) | 53 void ViewportStyleResolver::addViewportRule(StyleRuleViewport* viewportRule) |
53 { | 54 { |
(...skipping 17 matching lines...) Expand all Loading... |
71 void ViewportStyleResolver::clearDocument() | 72 void ViewportStyleResolver::clearDocument() |
72 { | 73 { |
73 m_document = 0; | 74 m_document = 0; |
74 } | 75 } |
75 | 76 |
76 void ViewportStyleResolver::resolve() | 77 void ViewportStyleResolver::resolve() |
77 { | 78 { |
78 if (!m_document) | 79 if (!m_document) |
79 return; | 80 return; |
80 | 81 |
81 if (!m_propertySet) { | 82 if (!m_propertySet || (!m_hasAuthorStyle && m_document->hasLegacyViewportTag
())) { |
82 // FIXME: This is not entirely correct. If the doctype is XHTML MP, or t
here is a Meta | 83 ASSERT(!m_hasAuthorStyle); |
83 // element for setting the viewport, the viewport arguments should fall
back to those | 84 m_propertySet = 0; |
84 // settings when the @viewport rules are all removed. For now, reset to
implicit when | 85 m_document->setViewportArguments(ViewportArguments()); |
85 // there was an @viewport rule which has now been removed. | |
86 if (m_document->viewportArguments().type == ViewportArguments::CSSDevice
Adaptation) { | |
87 m_document->setViewportArguments(ViewportArguments()); | |
88 m_document->updateViewportArguments(); | |
89 } | |
90 return; | 86 return; |
91 } | 87 } |
92 | 88 |
93 ViewportArguments arguments(ViewportArguments::CSSDeviceAdaptation); | 89 ViewportArguments arguments(m_hasAuthorStyle ? ViewportArguments::AuthorStyl
eSheet : ViewportArguments::UserAgentStyleSheet); |
94 | 90 |
95 arguments.userZoom = viewportArgumentValue(CSSPropertyUserZoom); | 91 arguments.userZoom = viewportArgumentValue(CSSPropertyUserZoom); |
96 arguments.zoom = viewportArgumentValue(CSSPropertyZoom); | 92 arguments.zoom = viewportArgumentValue(CSSPropertyZoom); |
97 arguments.minZoom = viewportArgumentValue(CSSPropertyMinZoom); | 93 arguments.minZoom = viewportArgumentValue(CSSPropertyMinZoom); |
98 arguments.maxZoom = viewportArgumentValue(CSSPropertyMaxZoom); | 94 arguments.maxZoom = viewportArgumentValue(CSSPropertyMaxZoom); |
99 arguments.minWidth = viewportLengthValue(CSSPropertyMinWidth); | 95 arguments.minWidth = viewportLengthValue(CSSPropertyMinWidth); |
100 arguments.maxWidth = viewportLengthValue(CSSPropertyMaxWidth); | 96 arguments.maxWidth = viewportLengthValue(CSSPropertyMaxWidth); |
101 arguments.minHeight = viewportLengthValue(CSSPropertyMinHeight); | 97 arguments.minHeight = viewportLengthValue(CSSPropertyMinHeight); |
102 arguments.maxHeight = viewportLengthValue(CSSPropertyMaxHeight); | 98 arguments.maxHeight = viewportLengthValue(CSSPropertyMaxHeight); |
103 arguments.orientation = viewportArgumentValue(CSSPropertyOrientation); | 99 arguments.orientation = viewportArgumentValue(CSSPropertyOrientation); |
104 | 100 |
105 m_document->setViewportArguments(arguments); | 101 m_document->setViewportArguments(arguments); |
106 m_document->updateViewportArguments(); | |
107 | 102 |
108 m_propertySet = 0; | 103 m_propertySet = 0; |
| 104 m_hasAuthorStyle = false; |
109 } | 105 } |
110 | 106 |
111 float ViewportStyleResolver::viewportArgumentValue(CSSPropertyID id) const | 107 float ViewportStyleResolver::viewportArgumentValue(CSSPropertyID id) const |
112 { | 108 { |
113 float defaultValue = ViewportArguments::ValueAuto; | 109 float defaultValue = ViewportArguments::ValueAuto; |
114 | 110 |
115 // UserZoom default value is CSSValueZoom, which maps to true, meaning that | 111 // UserZoom default value is CSSValueZoom, which maps to true, meaning that |
116 // yes, it is user scalable. When the value is set to CSSValueFixed, we | 112 // yes, it is user scalable. When the value is set to CSSValueFixed, we |
117 // return false. | 113 // return false. |
118 if (id == CSSPropertyUserZoom) | 114 if (id == CSSPropertyUserZoom) |
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
189 case CSSValueAuto: | 185 case CSSValueAuto: |
190 return Length(); | 186 return Length(); |
191 default: | 187 default: |
192 // Unrecognized keyword. | 188 // Unrecognized keyword. |
193 ASSERT_NOT_REACHED(); | 189 ASSERT_NOT_REACHED(); |
194 return Length(0, Fixed); | 190 return Length(0, Fixed); |
195 } | 191 } |
196 } | 192 } |
197 | 193 |
198 } // namespace WebCore | 194 } // namespace WebCore |
OLD | NEW |