OLD | NEW |
1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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 "core/html/LinkStyle.h" | 5 #include "core/html/LinkStyle.h" |
6 | 6 |
7 #include "core/css/StyleSheetContents.h" | 7 #include "core/css/StyleSheetContents.h" |
8 #include "core/frame/LocalFrame.h" | 8 #include "core/frame/LocalFrame.h" |
9 #include "core/frame/SubresourceIntegrity.h" | 9 #include "core/frame/SubresourceIntegrity.h" |
10 #include "core/frame/csp/ContentSecurityPolicy.h" | 10 #include "core/frame/csp/ContentSecurityPolicy.h" |
(...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
300 } | 300 } |
301 | 301 |
302 if (!m_owner->shouldLoadLink()) | 302 if (!m_owner->shouldLoadLink()) |
303 return Bail; | 303 return Bail; |
304 | 304 |
305 m_loading = true; | 305 m_loading = true; |
306 | 306 |
307 String title = m_owner->title(); | 307 String title = m_owner->title(); |
308 if (!title.isEmpty() && !m_owner->isAlternate() && | 308 if (!title.isEmpty() && !m_owner->isAlternate() && |
309 m_disabledState != EnabledViaScript && m_owner->isInDocumentTree()) { | 309 m_disabledState != EnabledViaScript && m_owner->isInDocumentTree()) { |
310 document().styleEngine().setPreferredStylesheetSetNameIfNotSet( | 310 document().styleEngine().setPreferredStylesheetSetNameIfNotSet(title); |
311 title, StyleEngine::DontUpdateActiveSheets); | |
312 } | 311 } |
313 | 312 |
314 bool mediaQueryMatches = true; | 313 bool mediaQueryMatches = true; |
315 LocalFrame* frame = loadingFrame(); | 314 LocalFrame* frame = loadingFrame(); |
316 if (!m_owner->media().isEmpty() && frame) { | 315 if (!m_owner->media().isEmpty() && frame) { |
317 MediaQuerySet* media = MediaQuerySet::create(m_owner->media()); | 316 MediaQuerySet* media = MediaQuerySet::create(m_owner->media()); |
318 MediaQueryEvaluator evaluator(frame); | 317 MediaQueryEvaluator evaluator(frame); |
319 mediaQueryMatches = evaluator.eval(media); | 318 mediaQueryMatches = evaluator.eval(media); |
320 } | 319 } |
321 | 320 |
(...skipping 67 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
389 if (loadStylesheetIfNeeded(builder, type) == NotNeeded && m_sheet) { | 388 if (loadStylesheetIfNeeded(builder, type) == NotNeeded && m_sheet) { |
390 // we no longer contain a stylesheet, e.g. perhaps rel or type was changed | 389 // we no longer contain a stylesheet, e.g. perhaps rel or type was changed |
391 clearSheet(); | 390 clearSheet(); |
392 document().styleEngine().setNeedsActiveStyleUpdate(m_owner->treeScope()); | 391 document().styleEngine().setNeedsActiveStyleUpdate(m_owner->treeScope()); |
393 // TODO(rune@opera.com): resolverChanged() can be removed once stylesheet | 392 // TODO(rune@opera.com): resolverChanged() can be removed once stylesheet |
394 // updates are async. https://crbug.com/567021 | 393 // updates are async. https://crbug.com/567021 |
395 document().styleEngine().resolverChanged(FullStyleUpdate); | 394 document().styleEngine().resolverChanged(FullStyleUpdate); |
396 } | 395 } |
397 } | 396 } |
398 | 397 |
399 void LinkStyle::setSheetTitle( | 398 void LinkStyle::setSheetTitle(const String& title) { |
400 const String& title, | |
401 StyleEngine::ActiveSheetsUpdate updateActiveSheets) { | |
402 if (!m_owner->isInDocumentTree() || !m_owner->relAttribute().isStyleSheet()) | 399 if (!m_owner->isInDocumentTree() || !m_owner->relAttribute().isStyleSheet()) |
403 return; | 400 return; |
404 | 401 |
405 if (m_sheet) | 402 if (m_sheet) |
406 m_sheet->setTitle(title); | 403 m_sheet->setTitle(title); |
407 | 404 |
408 if (title.isEmpty() || !isUnset() || m_owner->isAlternate()) | 405 if (title.isEmpty() || !isUnset() || m_owner->isAlternate()) |
409 return; | 406 return; |
410 | 407 |
411 const KURL& href = m_owner->getNonEmptyURLAttribute(hrefAttr); | 408 const KURL& href = m_owner->getNonEmptyURLAttribute(hrefAttr); |
412 if (href.isValid() && !href.isEmpty()) { | 409 if (href.isValid() && !href.isEmpty()) |
413 document().styleEngine().setPreferredStylesheetSetNameIfNotSet( | 410 document().styleEngine().setPreferredStylesheetSetNameIfNotSet(title); |
414 title, updateActiveSheets); | |
415 } | |
416 } | 411 } |
417 | 412 |
418 void LinkStyle::ownerRemoved() { | 413 void LinkStyle::ownerRemoved() { |
419 if (m_sheet) | 414 if (m_sheet) |
420 clearSheet(); | 415 clearSheet(); |
421 | 416 |
422 if (styleSheetIsLoading()) | 417 if (styleSheetIsLoading()) |
423 removePendingSheet(); | 418 removePendingSheet(); |
424 } | 419 } |
425 | 420 |
426 DEFINE_TRACE(LinkStyle) { | 421 DEFINE_TRACE(LinkStyle) { |
427 visitor->trace(m_sheet); | 422 visitor->trace(m_sheet); |
428 LinkResource::trace(visitor); | 423 LinkResource::trace(visitor); |
429 ResourceOwner<StyleSheetResource>::trace(visitor); | 424 ResourceOwner<StyleSheetResource>::trace(visitor); |
430 } | 425 } |
431 | 426 |
432 } // namespace blink | 427 } // namespace blink |
OLD | NEW |