Changeset 30466 in webkit
- Timestamp:
- Feb 21, 2008 4:14:47 PM (16 years ago)
- Location:
- trunk/WebCore
- Files:
-
- 9 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebCore/ChangeLog
r30465 r30466 1 2008-02-21 David Hyatt <hyatt@apple.com> 2 3 Fix for bug 17301. CSS media queries need to use the correct viewport 4 when contained in documents inside iframes (rather than always using the 5 top-level document's viewport). CSS media queries based on the viewport 6 also needed to be dynamic and update as you resize the window (this is 7 a HOT feature). :) 8 9 This patch gets Acid3 up to 86/100 with 3 colored boxes filled in. 10 11 Reviewed by olliej 12 13 Added fast/media/viewport-media-query.html 14 15 * css/CSSStyleSelector.cpp: 16 (WebCore::CSSStyleSelector::CSSStyleSelector): 17 (WebCore::CSSStyleSelector::addViewportDependentMediaQueryResult): 18 (WebCore::CSSStyleSelector::affectedByViewportChange): 19 * css/CSSStyleSelector.h: 20 (WebCore::MediaQueryResult::MediaQueryResult): 21 * css/MediaQueryEvaluator.cpp: 22 (WebCore::MediaQueryEvaluator::MediaQueryEvaluator): 23 (WebCore::MediaQueryEvaluator): 24 (WebCore::MediaQueryEvaluator::eval): 25 (WebCore::colorMediaFeatureEval): 26 (WebCore::monochromeMediaFeatureEval): 27 (WebCore::device_aspect_ratioMediaFeatureEval): 28 (WebCore::device_pixel_ratioMediaFeatureEval): 29 (WebCore::gridMediaFeatureEval): 30 (WebCore::device_heightMediaFeatureEval): 31 (WebCore::device_widthMediaFeatureEval): 32 (WebCore::heightMediaFeatureEval): 33 (WebCore::widthMediaFeatureEval): 34 (WebCore::min_colorMediaFeatureEval): 35 (WebCore::max_colorMediaFeatureEval): 36 (WebCore::min_monochromeMediaFeatureEval): 37 (WebCore::max_monochromeMediaFeatureEval): 38 (WebCore::min_device_aspect_ratioMediaFeatureEval): 39 (WebCore::max_device_aspect_ratioMediaFeatureEval): 40 (WebCore::min_device_pixel_ratioMediaFeatureEval): 41 (WebCore::max_device_pixel_ratioMediaFeatureEval): 42 (WebCore::min_heightMediaFeatureEval): 43 (WebCore::max_heightMediaFeatureEval): 44 (WebCore::min_widthMediaFeatureEval): 45 (WebCore::max_widthMediaFeatureEval): 46 (WebCore::min_device_heightMediaFeatureEval): 47 (WebCore::max_device_heightMediaFeatureEval): 48 (WebCore::min_device_widthMediaFeatureEval): 49 (WebCore::max_device_widthMediaFeatureEval): 50 * css/MediaQueryEvaluator.h: 51 * css/MediaQueryExp.cpp: 52 (WebCore::MediaQueryExp::~MediaQueryExp): 53 * css/MediaQueryExp.h: 54 (WebCore::MediaQueryExp::value): 55 (WebCore::MediaQueryExp::isViewportDependent): 56 * html/HTMLMediaElement.cpp: 57 (WebCore::HTMLMediaElement::pickMedia): 58 * page/FrameView.cpp: 59 (WebCore::FrameView::layout): 60 1 61 2008-02-21 Anders Carlsson <andersca@apple.com> 2 62 -
trunk/WebCore/css/CSSStyleSelector.cpp
r30421 r30466 282 282 if (m_rootDefaultStyle && view) { 283 283 delete m_medium; 284 m_medium = new MediaQueryEvaluator(view->mediaType(), view->frame() ->page(), m_rootDefaultStyle);284 m_medium = new MediaQueryEvaluator(view->mediaType(), view->frame(), m_rootDefaultStyle); 285 285 } 286 286 … … 5181 5181 } 5182 5182 5183 void CSSStyleSelector::addViewportDependentMediaQueryResult(const MediaQueryExp* expr, bool result) 5184 { 5185 m_viewportDependentMediaQueryResults.append(new MediaQueryResult(*expr, result)); 5186 } 5187 5188 bool CSSStyleSelector::affectedByViewportChange() const 5189 { 5190 unsigned s = m_viewportDependentMediaQueryResults.size(); 5191 for (unsigned i = 0; i < s; i++) { 5192 if (m_medium->eval(&m_viewportDependentMediaQueryResults[i]->m_expression) != m_viewportDependentMediaQueryResults[i]->m_result) 5193 return true; 5194 } 5195 return false; 5196 } 5197 5183 5198 } // namespace WebCore -
trunk/WebCore/css/CSSStyleSelector.h
r30293 r30466 24 24 25 25 #include "CSSFontSelector.h" 26 #include "MediaQueryExp.h" 26 27 #include "RenderStyle.h" 27 28 #include <wtf/HashSet.h> … … 56 57 class StyledElement; 57 58 59 class MediaQueryResult 60 { 61 public: 62 MediaQueryResult(const MediaQueryExp& expr, bool result) 63 : m_expression(expr) 64 , m_result(result) 65 {} 66 67 MediaQueryExp m_expression; 68 bool m_result; 69 }; 70 58 71 /** 59 72 * this class selects a RenderStyle for a given Element based on the … … 130 143 bool checkSelector(CSSSelector*); 131 144 145 void addViewportDependentMediaQueryResult(const MediaQueryExp*, bool result); 146 bool affectedByViewportChange() const; 147 132 148 protected: 133 149 enum SelectorMatch { … … 240 256 Vector<CSSMutableStyleDeclaration*> m_additionalAttributeStyleDecls; 241 257 258 Vector<MediaQueryResult*> m_viewportDependentMediaQueryResults; 259 242 260 void applyProperty(int id, CSSValue*); 243 261 -
trunk/WebCore/css/MediaQueryEvaluator.cpp
r29805 r30466 31 31 #include "Chrome.h" 32 32 #include "CSSPrimitiveValue.h" 33 #include "CSSStyleSelector.h" 33 34 #include "CSSValueList.h" 34 35 #include "FloatRect.h" … … 51 52 enum MediaFeaturePrefix { MinPrefix, MaxPrefix, NoPrefix }; 52 53 53 typedef bool (*EvalFunc)(CSSValue*, RenderStyle*, Page*, MediaFeaturePrefix);54 typedef bool (*EvalFunc)(CSSValue*, RenderStyle*, Frame*, MediaFeaturePrefix); 54 55 typedef HashMap<AtomicStringImpl*, EvalFunc> FunctionMap; 55 56 static FunctionMap* gFunctionMap; … … 68 69 69 70 MediaQueryEvaluator::MediaQueryEvaluator(bool mediaFeatureResult) 70 : m_ page(0)71 : m_frame(0) 71 72 , m_style(0) 72 73 , m_expResult(mediaFeatureResult) … … 76 77 MediaQueryEvaluator:: MediaQueryEvaluator(const String& acceptedMediaType, bool mediaFeatureResult) 77 78 : m_mediaType(acceptedMediaType) 78 , m_ page(0)79 , m_frame(0) 79 80 , m_style(0) 80 81 , m_expResult(mediaFeatureResult) … … 84 85 MediaQueryEvaluator:: MediaQueryEvaluator(const char* acceptedMediaType, bool mediaFeatureResult) 85 86 : m_mediaType(acceptedMediaType) 86 , m_ page(0)87 , m_frame(0) 87 88 , m_style(0) 88 89 , m_expResult(mediaFeatureResult) … … 90 91 } 91 92 92 MediaQueryEvaluator:: MediaQueryEvaluator(const String& acceptedMediaType, Page* page, RenderStyle* style)93 MediaQueryEvaluator:: MediaQueryEvaluator(const String& acceptedMediaType, Frame* frame, RenderStyle* style) 93 94 : m_mediaType(acceptedMediaType.lower()) 94 , m_ page(page)95 , m_frame(frame) 95 96 , m_style(style) 96 , m_expResult(false) // doesn't matter when we have m_ page and m_style97 , m_expResult(false) // doesn't matter when we have m_frame and m_style 97 98 { 98 99 } … … 142 143 // (AND semantics) 143 144 size_t j = 0; 144 for (; j < exps->size() && eval(exps->at(j)); ++j) /* empty*/; 145 for (; j < exps->size(); ++j) { 146 bool exprResult = eval(exps->at(j)); 147 if (exps->at(j)->isViewportDependent()) 148 m_frame->document()->styleSelector()->addViewportDependentMediaQueryResult(exps->at(j), exprResult); 149 if (!exprResult) 150 break; 151 } 145 152 146 153 // assume true if we are at the end of the list, … … 201 208 } 202 209 203 static bool colorMediaFeatureEval(CSSValue* value, RenderStyle* style, Page* page, MediaFeaturePrefix op)204 { 205 int bitsPerComponent = screenDepthPerComponent( page->mainFrame()->view());210 static bool colorMediaFeatureEval(CSSValue* value, RenderStyle* style, Frame* frame, MediaFeaturePrefix op) 211 { 212 int bitsPerComponent = screenDepthPerComponent(frame->page()->mainFrame()->view()); 206 213 float number; 207 214 if (value) … … 211 218 } 212 219 213 static bool monochromeMediaFeatureEval(CSSValue* value, RenderStyle* style, Page* page, MediaFeaturePrefix op)214 { 215 if (!screenIsMonochrome( page->mainFrame()->view()))220 static bool monochromeMediaFeatureEval(CSSValue* value, RenderStyle* style, Frame* frame, MediaFeaturePrefix op) 221 { 222 if (!screenIsMonochrome(frame->page()->mainFrame()->view())) 216 223 return false; 217 224 218 return colorMediaFeatureEval(value, style, page, op);219 } 220 221 static bool device_aspect_ratioMediaFeatureEval(CSSValue* value, RenderStyle* style, Page* page, MediaFeaturePrefix op)225 return colorMediaFeatureEval(value, style, frame, op); 226 } 227 228 static bool device_aspect_ratioMediaFeatureEval(CSSValue* value, RenderStyle* style, Frame* frame, MediaFeaturePrefix op) 222 229 { 223 230 if (value) { 224 FloatRect sg = screenRect( page->mainFrame()->view());231 FloatRect sg = screenRect(frame->page()->mainFrame()->view()); 225 232 int h = 0; 226 233 int v = 0; … … 235 242 } 236 243 237 static bool device_pixel_ratioMediaFeatureEval(CSSValue *value, RenderStyle* style, Page* page, MediaFeaturePrefix op)244 static bool device_pixel_ratioMediaFeatureEval(CSSValue *value, RenderStyle* style, Frame* frame, MediaFeaturePrefix op) 238 245 { 239 246 if (value) 240 return value->isPrimitiveValue() && compareValue( page->chrome()->scaleFactor(), static_cast<CSSPrimitiveValue*>(value)->getFloatValue(), op);241 242 return page->chrome()->scaleFactor() != 0;243 } 244 245 static bool gridMediaFeatureEval(CSSValue* value, RenderStyle* style, Page* page, MediaFeaturePrefix op)247 return value->isPrimitiveValue() && compareValue(frame->page()->chrome()->scaleFactor(), static_cast<CSSPrimitiveValue*>(value)->getFloatValue(), op); 248 249 return frame->page()->chrome()->scaleFactor() != 0; 250 } 251 252 static bool gridMediaFeatureEval(CSSValue* value, RenderStyle* style, Frame* frame, MediaFeaturePrefix op) 246 253 { 247 254 // if output device is bitmap, grid: 0 == true … … 253 260 } 254 261 255 static bool device_heightMediaFeatureEval(CSSValue* value, RenderStyle* style, Page* page, MediaFeaturePrefix op)262 static bool device_heightMediaFeatureEval(CSSValue* value, RenderStyle* style, Frame* frame, MediaFeaturePrefix op) 256 263 { 257 264 if (value) { 258 FloatRect sg = screenRect( page->mainFrame()->view());265 FloatRect sg = screenRect(frame->page()->mainFrame()->view()); 259 266 return value->isPrimitiveValue() && compareValue(static_cast<int>(sg.height()), static_cast<CSSPrimitiveValue*>(value)->computeLengthInt(style), op); 260 267 } … … 264 271 } 265 272 266 static bool device_widthMediaFeatureEval(CSSValue* value, RenderStyle* style, Page* page, MediaFeaturePrefix op)273 static bool device_widthMediaFeatureEval(CSSValue* value, RenderStyle* style, Frame* frame, MediaFeaturePrefix op) 267 274 { 268 275 if (value) { 269 FloatRect sg = screenRect( page->mainFrame()->view());276 FloatRect sg = screenRect(frame->page()->mainFrame()->view()); 270 277 return value->isPrimitiveValue() && compareValue(static_cast<int>(sg.width()), static_cast<CSSPrimitiveValue*>(value)->computeLengthInt(style), op); 271 278 } … … 275 282 } 276 283 277 static bool heightMediaFeatureEval(CSSValue* value, RenderStyle* style, Page* page, MediaFeaturePrefix op)278 { 279 FrameView* view = page->mainFrame()->view();284 static bool heightMediaFeatureEval(CSSValue* value, RenderStyle* style, Frame* frame, MediaFeaturePrefix op) 285 { 286 FrameView* view = frame->view(); 280 287 281 288 if (value) … … 285 292 } 286 293 287 static bool widthMediaFeatureEval(CSSValue* value, RenderStyle* style, Page* page, MediaFeaturePrefix op)288 { 289 FrameView* view = page->mainFrame()->view();294 static bool widthMediaFeatureEval(CSSValue* value, RenderStyle* style, Frame* frame, MediaFeaturePrefix op) 295 { 296 FrameView* view = frame->view(); 290 297 291 298 if (value) … … 297 304 // rest of the functions are trampolines which set the prefix according to the media feature expression used 298 305 299 static bool min_colorMediaFeatureEval(CSSValue* value, RenderStyle* style, Page* page, MediaFeaturePrefix /*op*/)300 { 301 return colorMediaFeatureEval(value, style, page, MinPrefix);302 } 303 304 static bool max_colorMediaFeatureEval(CSSValue* value, RenderStyle* style, Page* page, MediaFeaturePrefix /*op*/)305 { 306 return colorMediaFeatureEval(value, style, page, MaxPrefix);307 } 308 309 static bool min_monochromeMediaFeatureEval(CSSValue* value, RenderStyle* style, Page* page, MediaFeaturePrefix /*op*/)310 { 311 return monochromeMediaFeatureEval(value, style, page, MinPrefix);312 } 313 314 static bool max_monochromeMediaFeatureEval(CSSValue* value, RenderStyle* style, Page* page, MediaFeaturePrefix /*op*/)315 { 316 return monochromeMediaFeatureEval(value, style, page, MaxPrefix);317 } 318 319 static bool min_device_aspect_ratioMediaFeatureEval(CSSValue* value, RenderStyle* style, Page* page, MediaFeaturePrefix /*op*/)320 { 321 return device_aspect_ratioMediaFeatureEval(value, style, page, MinPrefix);322 } 323 324 static bool max_device_aspect_ratioMediaFeatureEval(CSSValue* value, RenderStyle* style, Page* page, MediaFeaturePrefix /*op*/)325 { 326 return device_aspect_ratioMediaFeatureEval(value, style, page, MaxPrefix);327 } 328 329 static bool min_device_pixel_ratioMediaFeatureEval(CSSValue* value, RenderStyle* style, Page* page, MediaFeaturePrefix /*op*/)330 { 331 return device_pixel_ratioMediaFeatureEval(value, style, page, MinPrefix);332 } 333 334 static bool max_device_pixel_ratioMediaFeatureEval(CSSValue* value, RenderStyle* style, Page* page, MediaFeaturePrefix /*op*/)335 { 336 return device_pixel_ratioMediaFeatureEval(value, style, page, MaxPrefix);337 } 338 339 static bool min_heightMediaFeatureEval(CSSValue* value, RenderStyle* style, Page* page, MediaFeaturePrefix /*op*/)340 { 341 return heightMediaFeatureEval(value, style, page, MinPrefix);342 } 343 344 static bool max_heightMediaFeatureEval(CSSValue* value, RenderStyle* style, Page* page, MediaFeaturePrefix /*op*/)345 { 346 return heightMediaFeatureEval(value, style, page, MaxPrefix);347 } 348 349 static bool min_widthMediaFeatureEval(CSSValue* value, RenderStyle* style, Page* page, MediaFeaturePrefix /*op*/)350 { 351 return widthMediaFeatureEval(value, style, page, MinPrefix);352 } 353 354 static bool max_widthMediaFeatureEval(CSSValue* value, RenderStyle* style, Page* page, MediaFeaturePrefix /*op*/)355 { 356 return widthMediaFeatureEval(value, style, page, MaxPrefix);357 } 358 359 static bool min_device_heightMediaFeatureEval(CSSValue* value, RenderStyle* style, Page* page, MediaFeaturePrefix /*op*/)360 { 361 return device_heightMediaFeatureEval(value, style, page, MinPrefix);362 } 363 364 static bool max_device_heightMediaFeatureEval(CSSValue* value, RenderStyle* style, Page* page, MediaFeaturePrefix /*op*/)365 { 366 return device_heightMediaFeatureEval(value, style, page, MaxPrefix);367 } 368 369 static bool min_device_widthMediaFeatureEval(CSSValue* value, RenderStyle* style, Page* page, MediaFeaturePrefix /*op*/)370 { 371 return device_widthMediaFeatureEval(value, style, page, MinPrefix);372 } 373 374 static bool max_device_widthMediaFeatureEval(CSSValue* value, RenderStyle* style, Page* page, MediaFeaturePrefix /*op*/)375 { 376 return device_widthMediaFeatureEval(value, style, page, MaxPrefix);306 static bool min_colorMediaFeatureEval(CSSValue* value, RenderStyle* style, Frame* frame, MediaFeaturePrefix /*op*/) 307 { 308 return colorMediaFeatureEval(value, style, frame, MinPrefix); 309 } 310 311 static bool max_colorMediaFeatureEval(CSSValue* value, RenderStyle* style, Frame* frame, MediaFeaturePrefix /*op*/) 312 { 313 return colorMediaFeatureEval(value, style, frame, MaxPrefix); 314 } 315 316 static bool min_monochromeMediaFeatureEval(CSSValue* value, RenderStyle* style, Frame* frame, MediaFeaturePrefix /*op*/) 317 { 318 return monochromeMediaFeatureEval(value, style, frame, MinPrefix); 319 } 320 321 static bool max_monochromeMediaFeatureEval(CSSValue* value, RenderStyle* style, Frame* frame, MediaFeaturePrefix /*op*/) 322 { 323 return monochromeMediaFeatureEval(value, style, frame, MaxPrefix); 324 } 325 326 static bool min_device_aspect_ratioMediaFeatureEval(CSSValue* value, RenderStyle* style, Frame* frame, MediaFeaturePrefix /*op*/) 327 { 328 return device_aspect_ratioMediaFeatureEval(value, style, frame, MinPrefix); 329 } 330 331 static bool max_device_aspect_ratioMediaFeatureEval(CSSValue* value, RenderStyle* style, Frame* frame, MediaFeaturePrefix /*op*/) 332 { 333 return device_aspect_ratioMediaFeatureEval(value, style, frame, MaxPrefix); 334 } 335 336 static bool min_device_pixel_ratioMediaFeatureEval(CSSValue* value, RenderStyle* style, Frame* frame, MediaFeaturePrefix /*op*/) 337 { 338 return device_pixel_ratioMediaFeatureEval(value, style, frame, MinPrefix); 339 } 340 341 static bool max_device_pixel_ratioMediaFeatureEval(CSSValue* value, RenderStyle* style, Frame* frame, MediaFeaturePrefix /*op*/) 342 { 343 return device_pixel_ratioMediaFeatureEval(value, style, frame, MaxPrefix); 344 } 345 346 static bool min_heightMediaFeatureEval(CSSValue* value, RenderStyle* style, Frame* frame, MediaFeaturePrefix /*op*/) 347 { 348 return heightMediaFeatureEval(value, style, frame, MinPrefix); 349 } 350 351 static bool max_heightMediaFeatureEval(CSSValue* value, RenderStyle* style, Frame* frame, MediaFeaturePrefix /*op*/) 352 { 353 return heightMediaFeatureEval(value, style, frame, MaxPrefix); 354 } 355 356 static bool min_widthMediaFeatureEval(CSSValue* value, RenderStyle* style, Frame* frame, MediaFeaturePrefix /*op*/) 357 { 358 return widthMediaFeatureEval(value, style, frame, MinPrefix); 359 } 360 361 static bool max_widthMediaFeatureEval(CSSValue* value, RenderStyle* style, Frame* frame, MediaFeaturePrefix /*op*/) 362 { 363 return widthMediaFeatureEval(value, style, frame, MaxPrefix); 364 } 365 366 static bool min_device_heightMediaFeatureEval(CSSValue* value, RenderStyle* style, Frame* frame, MediaFeaturePrefix /*op*/) 367 { 368 return device_heightMediaFeatureEval(value, style, frame, MinPrefix); 369 } 370 371 static bool max_device_heightMediaFeatureEval(CSSValue* value, RenderStyle* style, Frame* frame, MediaFeaturePrefix /*op*/) 372 { 373 return device_heightMediaFeatureEval(value, style, frame, MaxPrefix); 374 } 375 376 static bool min_device_widthMediaFeatureEval(CSSValue* value, RenderStyle* style, Frame* frame, MediaFeaturePrefix /*op*/) 377 { 378 return device_widthMediaFeatureEval(value, style, frame, MinPrefix); 379 } 380 381 static bool max_device_widthMediaFeatureEval(CSSValue* value, RenderStyle* style, Frame* frame, MediaFeaturePrefix /*op*/) 382 { 383 return device_widthMediaFeatureEval(value, style, frame, MaxPrefix); 377 384 } 378 385 … … 389 396 bool MediaQueryEvaluator::eval(const MediaQueryExp* expr) const 390 397 { 391 if (!m_ page || !m_style)398 if (!m_frame || !m_style) 392 399 return m_expResult; 393 400 … … 400 407 EvalFunc func = gFunctionMap->get(expr->mediaFeature().impl()); 401 408 if (func) 402 return func(expr->value(), m_style, m_ page, NoPrefix);409 return func(expr->value(), m_style, m_frame, NoPrefix); 403 410 404 411 return false; -
trunk/WebCore/css/MediaQueryEvaluator.h
r29663 r30466 32 32 33 33 namespace WebCore { 34 class Page;34 class Frame; 35 35 class RenderStyle; 36 36 class MediaList; … … 67 67 /** Creates evaluator which evaluates full media queries 68 68 */ 69 MediaQueryEvaluator(const String& acceptedMediaType, Page* page, RenderStyle* style);69 MediaQueryEvaluator(const String& acceptedMediaType, Frame*, RenderStyle*); 70 70 71 71 ~MediaQueryEvaluator(); … … 82 82 private: 83 83 String m_mediaType; 84 Page* m_page; // not owned84 Frame* m_frame; // not owned 85 85 RenderStyle* m_style; // not owned 86 86 bool m_expResult; -
trunk/WebCore/css/MediaQueryExp.cpp
r30429 r30466 81 81 MediaQueryExp::~MediaQueryExp() 82 82 { 83 delete m_value;84 83 } 85 84 -
trunk/WebCore/css/MediaQueryExp.h
r29663 r30466 31 31 #include "AtomicString.h" 32 32 #include "CSSValue.h" 33 #include "MediaFeatureNames.h" 34 #include <wtf/RefPtr.h> 33 35 34 36 namespace WebCore { … … 43 45 AtomicString mediaFeature() const { return m_mediaFeature; } 44 46 45 CSSValue* value() const { return m_value ; }47 CSSValue* value() const { return m_value.get(); } 46 48 47 49 bool operator==(const MediaQueryExp& other) const { … … 51 53 } 52 54 55 bool isViewportDependent() const { return m_mediaFeature == MediaFeatureNames::widthMediaFeature || 56 m_mediaFeature == MediaFeatureNames::heightMediaFeature || 57 m_mediaFeature == MediaFeatureNames::min_widthMediaFeature || 58 m_mediaFeature == MediaFeatureNames::min_heightMediaFeature || 59 m_mediaFeature == MediaFeatureNames::max_widthMediaFeature || 60 m_mediaFeature == MediaFeatureNames::max_heightMediaFeature; } 53 61 private: 54 62 AtomicString m_mediaFeature; 55 CSSValue*m_value;63 RefPtr<CSSValue> m_value; 56 64 }; 57 65 -
trunk/WebCore/html/HTMLMediaElement.cpp
r30243 r30466 810 810 continue; 811 811 if (source->hasAttribute(mediaAttr)) { 812 MediaQueryEvaluator screenEval("screen", document()-> page(), renderer() ? renderer()->style() : 0);812 MediaQueryEvaluator screenEval("screen", document()->frame(), renderer() ? renderer()->style() : 0); 813 813 RefPtr<MediaList> media = new MediaList((CSSStyleSheet*)0, source->media(), true); 814 814 if (!screenEval.eval(media.get())) -
trunk/WebCore/page/FrameView.cpp
r29878 r30466 28 28 29 29 #include "AXObjectCache.h" 30 #include "CSSStyleSelector.h" 30 31 #include "EventHandler.h" 31 32 #include "FloatRect.h" … … 364 365 performPostLayoutTasks(); 365 366 } 367 368 // Viewport-dependent media queries may cause us to need completely different style information. 369 // Check that here. 370 if (document->styleSelector()->affectedByViewportChange()) 371 document->updateStyleSelector(); 366 372 367 373 // Always ensure our style info is up-to-date. This can happen in situations where
Note: See TracChangeset
for help on using the changeset viewer.