| Index: Source/core/html/HTMLLinkElement.cpp | 
| diff --git a/Source/core/html/HTMLLinkElement.cpp b/Source/core/html/HTMLLinkElement.cpp | 
| index f7a257c06cf0927a7f32d789df1d93445134b9c4..0907d5b7d6b11032046d6bbcf719ed833770d176 100644 | 
| --- a/Source/core/html/HTMLLinkElement.cpp | 
| +++ b/Source/core/html/HTMLLinkElement.cpp | 
| @@ -489,6 +489,7 @@ LinkStyle::LinkStyle(HTMLLinkElement* owner) | 
| , m_loading(false) | 
| , m_firedLoad(false) | 
| , m_loadedSheet(false) | 
| +    , m_fetchFollowingCORS(false) | 
| { | 
| } | 
|  | 
| @@ -533,6 +534,7 @@ void LinkStyle::setCSSStyleSheet(const String& href, const KURL& baseURL, const | 
| m_sheet = CSSStyleSheet::create(restoredSheet, m_owner); | 
| m_sheet->setMediaQueries(MediaQuerySet::create(m_owner->media())); | 
| m_sheet->setTitle(m_owner->title()); | 
| +        setCrossOriginStylesheetStatus(m_sheet.get()); | 
|  | 
| m_loading = false; | 
| restoredSheet->checkLoaded(); | 
| @@ -547,6 +549,7 @@ void LinkStyle::setCSSStyleSheet(const String& href, const KURL& baseURL, const | 
| m_sheet = CSSStyleSheet::create(styleSheet, m_owner); | 
| m_sheet->setMediaQueries(MediaQuerySet::create(m_owner->media())); | 
| m_sheet->setTitle(m_owner->title()); | 
| +    setCrossOriginStylesheetStatus(m_sheet.get()); | 
|  | 
| styleSheet->parseAuthorStyleSheet(cachedStyleSheet, m_owner->document().securityOrigin()); | 
|  | 
| @@ -673,6 +676,16 @@ void LinkStyle::setDisabledState(bool disabled) | 
| } | 
| } | 
|  | 
| +void LinkStyle::setCrossOriginStylesheetStatus(CSSStyleSheet* sheet) | 
| +{ | 
| +    if (m_fetchFollowingCORS && resource() && !resource()->errorOccurred()) { | 
| +        // Record the security origin the CORS access check succeeded at, if cross origin. | 
| +        // Only origins that are script accessible to it may access the stylesheet's rules. | 
| +        sheet->setAllowRuleAccessFromOrigin(m_owner->document().securityOrigin()); | 
| +    } | 
| +    m_fetchFollowingCORS = false; | 
| +} | 
| + | 
| void LinkStyle::process() | 
| { | 
| ASSERT(m_owner->shouldProcessStyle()); | 
| @@ -723,8 +736,10 @@ void LinkStyle::process() | 
| // Load stylesheets that are not needed for the rendering immediately with low priority. | 
| FetchRequest request = builder.build(blocking); | 
| AtomicString crossOriginMode = m_owner->fastGetAttribute(HTMLNames::crossoriginAttr); | 
| -        if (!crossOriginMode.isNull()) | 
| +        if (!crossOriginMode.isNull()) { | 
| request.setCrossOriginAccessControl(document().securityOrigin(), crossOriginMode); | 
| +            setFetchFollowingCORS(); | 
| +        } | 
| setResource(document().fetcher()->fetchCSSStyleSheet(request)); | 
|  | 
| if (!resource()) { | 
|  |