WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
Fixed Evernote & Wordpress.com & MS Word's compat mode
bug-182564-20180214095835.patch (text/plain), 82.63 KB, created by
Ryosuke Niwa
on 2018-02-14 09:58:35 PST
(
hide
)
Description:
Fixed Evernote & Wordpress.com & MS Word's compat mode
Filename:
MIME Type:
Creator:
Ryosuke Niwa
Created:
2018-02-14 09:58:35 PST
Size:
82.63 KB
patch
obsolete
>Index: Source/WebCore/ChangeLog >=================================================================== >--- Source/WebCore/ChangeLog (revision 228384) >+++ Source/WebCore/ChangeLog (working copy) >@@ -1,3 +1,55 @@ >+2018-02-12 Ryosuke Niwa <rniwa@webkit.org> >+ >+ REGRESSION (r223440): Copying & pasting a list from Microsoft Word to TinyMCE fails >+ https://bugs.webkit.org/show_bug.cgi?id=182564 >+ >+ Reviewed by Wenson Hsieh. >+ >+ Unfortunately, r228352 was inadaquate to fix copying & pasting of a list item from Microsoft Word into TinyMCE >+ in older verions of TinyMCE. This patch amends the approach taken by r228352 to make it work across the board >+ as well as unbreak GMail. >+ >+ Turns out older versions of TinyMCE can't handle list items when computed styles are added as inline style >+ declarations by WebKit. To make this work, avoid adding any computed styles as inline styles within mso-list >+ conditionals as well as any p elements whose style attribute contains "mso-list" property. We would instead >+ preserve these styles by keeping Microsoft Word's CSS style rules in addition to special @list rules. >+ >+ In addition, not keeping the style element of Microsoft Word in a head element as done in r228352 causes some >+ versions of TinyMCE to treat it as regular text, and inserting a bunch of @list rules as user visible text. >+ To work around this problem, we serialize the style rules as a comment (<!-- ~ -->) within a head element. >+ >+ Furthermore, when Microsoft Word is in the compatibility mode, it does not generate xmlns:o as the first xmlns >+ declaration. Generalized the code to detect Microsoft Word's HTML declaration by looking for xmlns:o and xmlns:w >+ xmls declarations. >+ >+ Finally, it turns out that Gmail has its own handling of list items copy & pasted from Microsoft Word, and also >+ needs this quirks but in the pasted HTML, not the one exposed in getData. As such, this patch also enables the >+ MSO list quirks in the pasted content as well as the one exposed in getData. >+ >+ Tests: PasteHTML.PreservesMSOList >+ PasteHTML.PreservesMSOListInCompatibilityMode >+ PasteHTML.StripsMSOListWhenMissingMSOHTMLElement >+ PasteWebArchive.PreservesMSOList >+ PasteWebArchive.PreservesMSOListInCompatibilityMode >+ PasteWebArchive.StripsMSOListWhenMissingMSOHTMLElement >+ >+ * editing/HTMLInterchange.h: >+ * editing/ReplaceSelectionCommand.cpp: >+ (WebCore::removeHeadContents): Don't remove the special style element needed for the MSO list quirks since we >+ don't keep the computed style as inline styles in this case. >+ * editing/cocoa/WebContentReaderCocoa.mm: >+ (WebCore::WebContentReader::readWebArchive): Enable the quirks in the pasted content as well as opposed to >+ just in DataTransfer API exposed to the JavaScript. >+ (WebCore::WebContentReader::readHTML): Ditto. >+ * editing/markup.cpp: >+ (WebCore::shouldPreserveMSOLists): Added. Generalized the logic to detect a Microsoft Word document. >+ more xmlns declarations. >+ (WebCore::StyledMarkupAccumulator::shouldPreserveMSOListStyleForElement): Added. >+ (WebCore::StyledMarkupAccumulator::appendElement): Don't generate the second style element here for elements >+ with most-list properties. Instead, avoid overriding inline styles with computed styles altogether. >+ (WebCore::StyledMarkupAccumulator::appendNodeToPreserveMSOList): Include the style rules as well as list rules >+ and wrap the "style" element in a "head" element to make it compatible with older versions of TinyMCE. >+ > 2018-02-12 Chris Fleizach <cfleizach@apple.com> > > AX: defer focusedUIElement notifications >Index: Source/WebCore/editing/HTMLInterchange.h >=================================================================== >--- Source/WebCore/editing/HTMLInterchange.h (revision 228384) >+++ Source/WebCore/editing/HTMLInterchange.h (working copy) >@@ -36,6 +36,7 @@ class Text; > #define ApplePasteAsQuotation "Apple-paste-as-quotation" > #define AppleStyleSpanClass "Apple-style-span" > #define AppleTabSpanClass "Apple-tab-span" >+#define WebKitMSOListQuirksStyle "WebKit-mso-list-quirks-style" > > enum EAnnotateForInterchange { DoNotAnnotateForInterchange, AnnotateForInterchange }; > >Index: Source/WebCore/editing/ReplaceSelectionCommand.cpp >=================================================================== >--- Source/WebCore/editing/ReplaceSelectionCommand.cpp (revision 228384) >+++ Source/WebCore/editing/ReplaceSelectionCommand.cpp (working copy) >@@ -728,7 +728,8 @@ static void removeHeadContents(Replaceme > auto it = descendantsOfType<Element>(*fragment.fragment()).begin(); > auto end = descendantsOfType<Element>(*fragment.fragment()).end(); > while (it != end) { >- if (is<HTMLBaseElement>(*it) || is<HTMLLinkElement>(*it) || is<HTMLMetaElement>(*it) || is<HTMLStyleElement>(*it) || is<HTMLTitleElement>(*it)) { >+ if (is<HTMLBaseElement>(*it) || is<HTMLLinkElement>(*it) || is<HTMLMetaElement>(*it) || is<HTMLTitleElement>(*it) >+ || (is<HTMLStyleElement>(*it) && it->getAttribute(classAttr) != WebKitMSOListQuirksStyle)) { > toRemove.append(&*it); > it.traverseNextSkippingChildren(); > continue; >Index: Source/WebCore/editing/markup.cpp >=================================================================== >--- Source/WebCore/editing/markup.cpp (revision 228384) >+++ Source/WebCore/editing/markup.cpp (working copy) >@@ -236,6 +236,8 @@ private: > String renderedText(const Node&, const Range*); > String stringValueForRange(const Node&, const Range*); > >+ bool shouldPreserveMSOListStyleForElement(const Element&); >+ > void appendElement(StringBuilder& out, const Element&, bool addDisplayInline, RangeFullySelectsNode); > void appendCustomAttributes(StringBuilder&, const Element&, Namespaces*) override; > >@@ -421,6 +423,11 @@ void StyledMarkupAccumulator::appendCust > #endif > } > >+bool StyledMarkupAccumulator::shouldPreserveMSOListStyleForElement(const Element& element) >+{ >+ return m_inMSOList || (m_shouldPreserveMSOList && element.hasTagName(pTag) && element.getAttribute(styleAttr).contains(";mso-list:")); >+} >+ > void StyledMarkupAccumulator::appendElement(StringBuilder& out, const Element& element, bool addDisplayInline, RangeFullySelectsNode rangeFullySelectsNode) > { > const bool documentIsHTML = element.document().isHTMLDocument(); >@@ -429,16 +436,12 @@ void StyledMarkupAccumulator::appendElem > appendCustomAttributes(out, element, nullptr); > > const bool shouldAnnotateOrForceInline = element.isHTMLElement() && (shouldAnnotate() || addDisplayInline); >- const bool shouldOverrideStyleAttr = shouldAnnotateOrForceInline || shouldApplyWrappingStyle(element); >- bool containsMSOList = false; >+ bool shouldOverrideStyleAttr = (shouldAnnotateOrForceInline || shouldApplyWrappingStyle(element)) && !shouldPreserveMSOListStyleForElement(element); > if (element.hasAttributes()) { > for (const Attribute& attribute : element.attributesIterator()) { > // We'll handle the style attribute separately, below. >- if (attribute.name() == styleAttr && shouldOverrideStyleAttr) { >- if (m_shouldPreserveMSOList && attribute.value().contains(";mso-list:")) >- containsMSOList = true; >+ if (attribute.name() == styleAttr && shouldOverrideStyleAttr) > continue; >- } > if (element.isEventHandlerAttribute(attribute) || element.isJavaScriptURLAttribute(attribute)) > continue; > appendAttribute(out, element, attribute, 0); >@@ -481,16 +484,6 @@ void StyledMarkupAccumulator::appendElem > appendAttributeValue(out, newInlineStyle->style()->asText(), documentIsHTML); > out.append('\"'); > } >- >- if (containsMSOList) { >- ASSERT(m_shouldPreserveMSOList); >- // Unfortunately, TinyMCE doesn't recognize mso-list inline style if the style attribute contains properties. >- // Generate a separate, second style attribute if newInlineStyle is not empty above. >- // The inline style is preserved because the first attribute always wins but TinyMCE can still recognize the list. >- out.appendLiteral(" style=\""); >- appendAttributeValue(out, element.getAttribute(styleAttr), documentIsHTML); >- out.append('\"'); >- } > } > > appendCloseTag(out, element); >@@ -615,18 +608,21 @@ bool StyledMarkupAccumulator::appendNode > auto& textChild = downcast<Text>(*firstChild); > auto& styleContent = textChild.data(); > >+ const auto msoStyleDefinitionsStart = styleContent.find("/* Style Definitions */"); > const auto msoListDefinitionsStart = styleContent.find("/* List Definitions */"); > const auto lastListItem = styleContent.reverseFind("\n@list"); > if (msoListDefinitionsStart == notFound || lastListItem == notFound) > return false; >+ const auto start = msoStyleDefinitionsStart != notFound && msoStyleDefinitionsStart < msoListDefinitionsStart ? msoStyleDefinitionsStart : msoListDefinitionsStart; > > const auto msoListDefinitionsEnd = styleContent.find(";}\n", lastListItem); >- if (msoListDefinitionsEnd == notFound || msoListDefinitionsStart >= msoListDefinitionsEnd) >+ if (msoListDefinitionsEnd == notFound || start >= msoListDefinitionsEnd) > return false; > >- appendStartTag(node); >- appendTextSubstring(textChild, msoListDefinitionsStart, msoListDefinitionsEnd - msoListDefinitionsStart + 1); >- appendEndTag(node); >+ appendString("<head><style class=\"" WebKitMSOListQuirksStyle "\">\n<!--\n"); >+ appendTextSubstring(textChild, start, msoListDefinitionsEnd - start + 3); >+ appendString("\n-->\n</style></head>"); >+ > return true; > } > return false; >@@ -839,11 +835,22 @@ String createMarkup(const Range& range, > return createMarkupInternal(range.ownerDocument(), range, nodes, shouldAnnotate, convertBlocksToInlines, shouldResolveURLs, MSOListMode::DoNotPreserve); > } > >+static bool shouldPreserveMSOLists(const String& markup) >+{ >+ if (!markup.startsWith("<html xmlns:")) >+ return false; >+ auto tagClose = markup.find('>'); >+ if (tagClose == notFound) >+ return false; >+ auto htmlTag = markup.substring(0, tagClose); >+ return htmlTag.contains("xmlns:o=\"urn:schemas-microsoft-com:office:office\"") >+ && htmlTag.contains("xmlns:w=\"urn:schemas-microsoft-com:office:word\""); >+} >+ > String sanitizedMarkupForFragmentInDocument(Ref<DocumentFragment>&& fragment, Document& document, MSOListQuirks msoListQuirks, const String& originalMarkup) > { >- MSOListMode msoListMode = MSOListMode::DoNotPreserve; >- if (msoListQuirks == MSOListQuirks::CheckIfNeeded && originalMarkup.startsWith("<html xmlns:o=\"urn:schemas-microsoft-com:office:office\"")) >- msoListMode = MSOListMode::Preserve; >+ MSOListMode msoListMode = msoListQuirks == MSOListQuirks::CheckIfNeeded && shouldPreserveMSOLists(originalMarkup) >+ ? MSOListMode::Preserve : MSOListMode::DoNotPreserve; > > auto bodyElement = makeRefPtr(document.body()); > ASSERT(bodyElement); >Index: Source/WebCore/editing/cocoa/WebContentReaderCocoa.mm >=================================================================== >--- Source/WebCore/editing/cocoa/WebContentReaderCocoa.mm (revision 228384) >+++ Source/WebCore/editing/cocoa/WebContentReaderCocoa.mm (working copy) >@@ -457,7 +457,7 @@ bool WebContentReader::readWebArchive(Sh > return true; > } > >- String sanitizedMarkup = sanitizeMarkupWithArchive(*frame.document(), *result, MSOListQuirks::Disabled, [&] (const String& type) { >+ String sanitizedMarkup = sanitizeMarkupWithArchive(*frame.document(), *result, msoListQuirksForMarkup(), [&] (const String& type) { > return frame.loader().client().canShowMIMETypeAsHTML(type); > }); > fragment = createFragmentFromMarkup(*frame.document(), sanitizedMarkup, blankURL(), DisallowScriptingAndPluginContent); >@@ -518,7 +518,7 @@ bool WebContentReader::readHTML(const St > > String markup; > if (RuntimeEnabledFeatures::sharedFeatures().customPasteboardDataEnabled() && shouldSanitize()) { >- markup = sanitizeMarkup(stringOmittingMicrosoftPrefix, MSOListQuirks::Disabled, WTF::Function<void (DocumentFragment&)> { [] (DocumentFragment& fragment) { >+ markup = sanitizeMarkup(stringOmittingMicrosoftPrefix, msoListQuirksForMarkup(), WTF::Function<void (DocumentFragment&)> { [] (DocumentFragment& fragment) { > removeSubresourceURLAttributes(fragment, [] (const URL& url) { > return shouldReplaceSubresourceURL(url); > }); >Index: Tools/ChangeLog >=================================================================== >--- Tools/ChangeLog (revision 228411) >+++ Tools/ChangeLog (working copy) >@@ -1,3 +1,24 @@ >+2018-02-12 Ryosuke Niwa <rniwa@webkit.org> >+ >+ REGRESSION (r223440): Copying & pasting a list from Microsoft Word to TinyMCE fails >+ https://bugs.webkit.org/show_bug.cgi?id=182564 >+ >+ Reviewed by Wenson Hsieh. >+ >+ Updated assertions to make sure the trailing "}" of @list rules is includd in the style, the "style" element >+ is wrapped by "head" element (not present in the pasted markup since the fragment parsing algorithm strips away), >+ and the style content is enclosed in "<!--" and "-->". >+ >+ Also use execCommand('insertHTML', ~) to insert the HTML obtained via dataTransfer.getData instead of innerHTML >+ to make sure our pasting code preserves the special style element for MSO list quirks. >+ >+ Finally, added two more test cases for pasting content from Microsoft Word's compatibility mode. >+ >+ * TestWebKitAPI/Tests/WebKitCocoa/PasteHTML.mm: >+ (TEST): >+ * TestWebKitAPI/Tests/WebKitCocoa/PasteWebArchive.mm: >+ (TEST): >+ > 2018-02-12 Ross Kirsling <ross.kirsling@sony.com> > > download-latest-github-release .py should not use "browser download URL". >Index: Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj >=================================================================== >--- Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj (revision 228384) >+++ Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj (working copy) >@@ -579,6 +579,7 @@ > 9B26FCCA159D16DE00CC3765 /* HTMLFormCollectionNamedItem.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 9B26FCB4159D15E700CC3765 /* HTMLFormCollectionNamedItem.html */; }; > 9B270FEE1DDC2C0B002D53F3 /* closed-shadow-tree-test.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 9B270FED1DDC25FD002D53F3 /* closed-shadow-tree-test.html */; }; > 9B4F8FA7159D52DD002D9F94 /* HTMLCollectionNamedItem.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 9B4F8FA6159D52CA002D9F94 /* HTMLCollectionNamedItem.html */; }; >+ 9B59F12A2034086F009E63D5 /* mso-list-compat-mode.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 9B59F12920340854009E63D5 /* mso-list-compat-mode.html */; }; > 9B62630C1F8C25C8007EE29B /* copy-url.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 9B62630B1F8C2510007EE29B /* copy-url.html */; }; > 9B7A37C41F8AEBA5004AA228 /* CopyURL.mm in Sources */ = {isa = PBXBuildFile; fileRef = 9B7A37C21F8AEBA5004AA228 /* CopyURL.mm */; }; > 9B7D740F1F8378770006C432 /* paste-rtfd.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = 9B7D740E1F8377E60006C432 /* paste-rtfd.html */; }; >@@ -1021,6 +1022,7 @@ > 51CD1C721B38D48400142CA5 /* modal-alerts-in-new-about-blank-window.html in Copy Resources */, > 7A1458FC1AD5C07000E06772 /* mouse-button-listener.html in Copy Resources */, > 33E79E06137B5FD900E32D99 /* mouse-move-listener.html in Copy Resources */, >+ 9B59F12A2034086F009E63D5 /* mso-list-compat-mode.html in Copy Resources */, > 9BF356CD202D458500F71160 /* mso-list.html in Copy Resources */, > 5797FE331EB15AB100B2F4A0 /* navigation-client-default-crypto.html in Copy Resources */, > C99B675F1E39736F00FC6C80 /* no-autoplay-with-controls.html in Copy Resources */, >@@ -1602,6 +1604,7 @@ > 9B270FED1DDC25FD002D53F3 /* closed-shadow-tree-test.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = "closed-shadow-tree-test.html"; sourceTree = "<group>"; }; > 9B4F8FA3159D52B1002D9F94 /* HTMLCollectionNamedItem.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = HTMLCollectionNamedItem.mm; sourceTree = "<group>"; }; > 9B4F8FA6159D52CA002D9F94 /* HTMLCollectionNamedItem.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; path = HTMLCollectionNamedItem.html; sourceTree = "<group>"; }; >+ 9B59F12920340854009E63D5 /* mso-list-compat-mode.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = "mso-list-compat-mode.html"; sourceTree = "<group>"; }; > 9B62630B1F8C2510007EE29B /* copy-url.html */ = {isa = PBXFileReference; lastKnownFileType = text.html; path = "copy-url.html"; sourceTree = "<group>"; }; > 9B79164F1BD89D0D00D50B8F /* FirstResponderScrollingPosition.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = FirstResponderScrollingPosition.mm; sourceTree = "<group>"; }; > 9B7A37C21F8AEBA5004AA228 /* CopyURL.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = CopyURL.mm; sourceTree = "<group>"; }; >@@ -2450,6 +2453,7 @@ > 46C519E31D35629600DAA51A /* LocalStorageNullEntries.localstorage */, > 46C519E41D35629600DAA51A /* LocalStorageNullEntries.localstorage-shm */, > 7A6A2C711DCCFB0200C0D085 /* LocalStorageQuirkEnabled.html */, >+ 9B59F12920340854009E63D5 /* mso-list-compat-mode.html */, > 9BF356CC202D44F200F71160 /* mso-list.html */, > 93E2D2751ED7D51700FA76F6 /* offscreen-iframe-of-media-document.html */, > 7CCB99221D3B44E7003922F6 /* open-multiple-external-url.html */, >Index: Tools/TestWebKitAPI/Tests/WebKitCocoa/PasteHTML.mm >=================================================================== >--- Tools/TestWebKitAPI/Tests/WebKitCocoa/PasteHTML.mm (revision 228384) >+++ Tools/TestWebKitAPI/Tests/WebKitCocoa/PasteHTML.mm (working copy) >@@ -170,32 +170,74 @@ TEST(PasteHTML, PreservesMSOList) > [webView stringByEvaluatingJavaScript:@"window.pastedHTML = editor.innerHTML"]; > > EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.startsWith('<html xmlns:o=\"urn:schemas-microsoft-com:office:office\"')"].boolValue); >- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/* List Definitions */')"].boolValue); >- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('@list l0:level1')"].boolValue); >- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('[if !supportLists]')"].boolValue); >- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('[endif]')"].boolValue); >- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes(' style=\"text-indent:-.25in;mso-list:l0 level1 lfo1\">')"].boolValue); >- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/* Style Definitions */')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('<style class=\"WebKit-mso-list-quirks-style\">\\n<!--\\n')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/* Style Definitions */')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/* List Definitions */')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('@list l0:level1')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('}\\n\\n-->\\n</style>')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('[if !supportLists]')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('[endif]')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes(' style=\"text-indent:-.25in;mso-list:l0 level1 lfo1\">')"].boolValue); > EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/Users/webkitten/Library/')"].boolValue); >+ > [webView stringByEvaluatingJavaScript:@"getSelection().setPosition(document.querySelector('.MsoListParagraphCxSpLast'));"]; > [webView stringByEvaluatingJavaScript:@"getSelection().modify('move', 'forward', 'lineboundary');"]; > EXPECT_WK_STREQ("rgb(255, 0, 0)", [webView stringByEvaluatingJavaScript:@"document.queryCommandValue('foreColor')"]); > > EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.startsWith('<html xmlns:o=\"urn:schemas-microsoft-com:office:office\"')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('<head><style class=\"WebKit-mso-list-quirks-style\">\\n<!--\\n')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/* Style Definitions */')"].boolValue); > EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/* List Definitions */')"].boolValue); > EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('@list l0:level1')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('}\\n\\n-->\\n</style></head>')"].boolValue); > EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('[if !supportLists]')"].boolValue); > EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('[endif]')"].boolValue); > EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes(' style=\"text-indent:-.25in;mso-list:l0 level1 lfo1\">')"].boolValue); >- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/* Style Definitions */')"].boolValue); > EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/Users/webkitten/Library/')"].boolValue); > >- [webView stringByEvaluatingJavaScript:@"editor.innerHTML = htmlInDataTransfer"]; >+ [webView stringByEvaluatingJavaScript:@"editor.innerHTML = ''; editor.focus();"]; >+ [webView stringByEvaluatingJavaScript:@"document.execCommand('insertHTML', false, htmlInDataTransfer);"]; > [webView stringByEvaluatingJavaScript:@"getSelection().setPosition(document.querySelector('.MsoListParagraphCxSpLast'));"]; > [webView stringByEvaluatingJavaScript:@"getSelection().modify('move', 'forward', 'lineboundary');"]; > EXPECT_WK_STREQ("rgb(255, 0, 0)", [webView stringByEvaluatingJavaScript:@"document.queryCommandValue('foreColor')"]); > } > >+TEST(PasteHTML, PreservesMSOListInCompatibilityMode) >+{ >+ writeHTMLToPasteboard([NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"mso-list-compat-mode" ofType:@"html" inDirectory:@"TestWebKitAPI.resources"] >+ encoding:NSUTF8StringEncoding error:NULL]); >+ >+ auto webView = createWebViewWithCustomPasteboardDataSetting(true); >+ [webView synchronouslyLoadTestPageNamed:@"paste-rtfd"]; >+ [webView paste:nil]; >+ >+ EXPECT_WK_STREQ("[\"text/html\"]", [webView stringByEvaluatingJavaScript:@"JSON.stringify(clipboardData.types)"]); >+ [webView stringByEvaluatingJavaScript:@"window.htmlInDataTransfer = clipboardData.values[0]"]; >+ [webView stringByEvaluatingJavaScript:@"window.pastedHTML = editor.innerHTML"]; >+ >+ EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.startsWith('<html xmlns:o=\"urn:schemas-microsoft-com:office:office\"')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('<style class=\"WebKit-mso-list-quirks-style\">\\n<!--\\n')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/* Style Definitions */')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/* List Definitions */')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('@list l0:level1')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('}\\n\\n-->\\n</style>')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('[if !supportLists]')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('[endif]')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('<p style=\"margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1\">')"].boolValue); >+ EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/Users/webkitten/Library/')"].boolValue); >+ >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.startsWith('<html xmlns:o=\"urn:schemas-microsoft-com:office:office\"')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('<head><style class=\"WebKit-mso-list-quirks-style\">\\n<!--\\n')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/* Style Definitions */')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/* List Definitions */')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('@list l0:level1')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('}\\n\\n-->\\n</style></head>')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('[if !supportLists]')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('[endif]')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('<p style=\"margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1\">')"].boolValue); >+ EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/Users/webkitten/Library/')"].boolValue); >+} >+ > TEST(PasteHTML, StripsMSOListWhenMissingMSOHTMLElement) > { > auto *markup = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"mso-list" ofType:@"html" inDirectory:@"TestWebKitAPI.resources"] encoding:NSUTF8StringEncoding error:NULL]; >@@ -211,26 +253,33 @@ TEST(PasteHTML, StripsMSOListWhenMissing > [webView stringByEvaluatingJavaScript:@"window.pastedHTML = editor.innerHTML"]; > > EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.startsWith('<html xmlns:o=\"urn:schemas-microsoft-com:office:office\"')"].boolValue); >+ EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('<style class=\"WebKit-mso-list-quirks-style\">\\n<!--\\n')"].boolValue); >+ EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/* Style Definitions */')"].boolValue); > EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/* List Definitions */')"].boolValue); > EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('@list l0:level1')"].boolValue); >+ EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('}\\n\\n-->\\n</style>')"].boolValue); > EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('[if !supportLists]')"].boolValue); > EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('[endif]')"].boolValue); > EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes(' style=\"text-indent:-.25in;mso-list:l0 level1 lfo1\">')"].boolValue); >- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/* Style Definitions */')"].boolValue); > EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/Users/webkitten/Library/')"].boolValue); >+ > [webView stringByEvaluatingJavaScript:@"getSelection().setPosition(document.querySelector('.MsoListParagraphCxSpLast'));"]; > [webView stringByEvaluatingJavaScript:@"getSelection().modify('move', 'forward', 'lineboundary');"]; > EXPECT_WK_STREQ("rgb(255, 0, 0)", [webView stringByEvaluatingJavaScript:@"document.queryCommandValue('foreColor')"]); > >+ EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.startsWith('<html xmlns:o=\"urn:schemas-microsoft-com:office:office\"')"].boolValue); >+ EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('<head><style class=\"WebKit-mso-list-quirks-style\">\\n<!--\\n')"].boolValue); >+ EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/* Style Definitions */')"].boolValue); > EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/* List Definitions */')"].boolValue); > EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('@list l0:level1')"].boolValue); >+ EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('}\\n\\n-->\\n</style></head>')"].boolValue); > EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('[if !supportLists]')"].boolValue); > EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('[endif]')"].boolValue); > EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes(' style=\"text-indent:-.25in;mso-list:l0 level1 lfo1\">')"].boolValue); >- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/* Style Definitions */')"].boolValue); > EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/Users/webkitten/Library/')"].boolValue); > >- [webView stringByEvaluatingJavaScript:@"editor.innerHTML = htmlInDataTransfer"]; >+ [webView stringByEvaluatingJavaScript:@"editor.innerHTML = ''; editor.focus();"]; >+ [webView stringByEvaluatingJavaScript:@"document.execCommand('insertHTML', false, htmlInDataTransfer);"]; > [webView stringByEvaluatingJavaScript:@"getSelection().setPosition(document.querySelector('.MsoListParagraphCxSpLast'));"]; > [webView stringByEvaluatingJavaScript:@"getSelection().modify('move', 'forward', 'lineboundary');"]; > EXPECT_WK_STREQ("rgb(255, 0, 0)", [webView stringByEvaluatingJavaScript:@"document.queryCommandValue('foreColor')"]); >Index: Tools/TestWebKitAPI/Tests/WebKitCocoa/PasteWebArchive.mm >=================================================================== >--- Tools/TestWebKitAPI/Tests/WebKitCocoa/PasteWebArchive.mm (revision 228384) >+++ Tools/TestWebKitAPI/Tests/WebKitCocoa/PasteWebArchive.mm (working copy) >@@ -120,31 +120,77 @@ TEST(PasteWebArchive, PreservesMSOList) > [webView stringByEvaluatingJavaScript:@"window.pastedHTML = editor.innerHTML"]; > > EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.startsWith('<html xmlns:o=\"urn:schemas-microsoft-com:office:office\"')"].boolValue); >- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/* List Definitions */')"].boolValue); >- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('@list l0:level1')"].boolValue); >- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('[if !supportLists]')"].boolValue); >- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('[endif]')"].boolValue); >- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes(' style=\"text-indent:-.25in;mso-list:l0 level1 lfo1\">')"].boolValue); >- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/* Style Definitions */')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('<style class=\"WebKit-mso-list-quirks-style\">\\n<!--\\n')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/* Style Definitions */')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/* List Definitions */')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('@list l0:level1')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('}\\n\\n-->\\n</style>')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('[if !supportLists]')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('[endif]')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes(' style=\"text-indent:-.25in;mso-list:l0 level1 lfo1\">')"].boolValue); > EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/Users/webkitten/Library/')"].boolValue); >+ > [webView stringByEvaluatingJavaScript:@"getSelection().setPosition(document.querySelector('.MsoListParagraphCxSpLast'));"]; > [webView stringByEvaluatingJavaScript:@"getSelection().modify('move', 'forward', 'lineboundary');"]; > EXPECT_WK_STREQ("rgb(255, 0, 0)", [webView stringByEvaluatingJavaScript:@"document.queryCommandValue('foreColor')"]); > > EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.startsWith('<html xmlns:o=\"urn:schemas-microsoft-com:office:office\"')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('<head><style class=\"WebKit-mso-list-quirks-style\">\\n<!--\\n')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/* Style Definitions */')"].boolValue); > EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/* List Definitions */')"].boolValue); > EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('@list l0:level1')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('}\\n\\n-->\\n</style></head>')"].boolValue); > EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('[if !supportLists]')"].boolValue); > EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('[endif]')"].boolValue); > EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes(' style=\"text-indent:-.25in;mso-list:l0 level1 lfo1\">')"].boolValue); >- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/* Style Definitions */')"].boolValue); > EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/Users/webkitten/Library/')"].boolValue); > >- [webView stringByEvaluatingJavaScript:@"editor.innerHTML = htmlInDataTransfer"]; >+ [webView stringByEvaluatingJavaScript:@"editor.innerHTML = ''; editor.focus();"]; >+ [webView stringByEvaluatingJavaScript:@"document.execCommand('insertHTML', false, htmlInDataTransfer);"]; > [webView stringByEvaluatingJavaScript:@"getSelection().setPosition(document.querySelector('.MsoListParagraphCxSpLast'));"]; > [webView stringByEvaluatingJavaScript:@"getSelection().modify('move', 'forward', 'lineboundary');"]; > EXPECT_WK_STREQ("rgb(255, 0, 0)", [webView stringByEvaluatingJavaScript:@"document.queryCommandValue('foreColor')"]); >+} >+ >+TEST(PasteWebArchive, PreservesMSOListInCompatibilityMode) >+{ >+ auto *url = [NSURL URLWithString:@"file:///some-file.html"]; >+ auto *markup = [NSData dataWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"mso-list-compat-mode" ofType:@"html" inDirectory:@"TestWebKitAPI.resources"]]; >+ auto mainResource = adoptNS([[WebResource alloc] initWithData:markup URL:url MIMEType:@"text/html" textEncodingName:@"utf-8" frameName:nil]); >+ auto archive = adoptNS([[WebArchive alloc] initWithMainResource:mainResource.get() subresources:nil subframeArchives:nil]); >+ >+ [[NSPasteboard generalPasteboard] declareTypes:@[WebArchivePboardType] owner:nil]; >+ [[NSPasteboard generalPasteboard] setData:[archive data] forType:WebArchivePboardType]; >+ >+ auto webView = createWebViewWithCustomPasteboardDataEnabled(); >+ [webView synchronouslyLoadTestPageNamed:@"paste-rtfd"]; >+ [webView paste:nil]; > >+ EXPECT_WK_STREQ("[\"text/html\"]", [webView stringByEvaluatingJavaScript:@"JSON.stringify(clipboardData.types)"]); >+ [webView stringByEvaluatingJavaScript:@"window.htmlInDataTransfer = clipboardData.values[0]"]; >+ [webView stringByEvaluatingJavaScript:@"window.pastedHTML = editor.innerHTML"]; >+ >+ EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.startsWith('<html xmlns:o=\"urn:schemas-microsoft-com:office:office\"')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('<style class=\"WebKit-mso-list-quirks-style\">\\n<!--\\n')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/* Style Definitions */')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/* List Definitions */')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('@list l0:level1')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('}\\n\\n-->\\n</style>')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('[if !supportLists]')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('[endif]')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('<p style=\"margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1\">')"].boolValue); >+ EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('/Users/webkitten/Library/')"].boolValue); >+ >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.startsWith('<html xmlns:o=\"urn:schemas-microsoft-com:office:office\"')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('<head><style class=\"WebKit-mso-list-quirks-style\">\\n<!--\\n')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/* Style Definitions */')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/* List Definitions */')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('@list l0:level1')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('}\\n\\n-->\\n</style></head>')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('[if !supportLists]')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('[endif]')"].boolValue); >+ EXPECT_TRUE([webView stringByEvaluatingJavaScript:@"pastedHTML.includes('<p style=\"margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1\">')"].boolValue); >+ EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/Users/webkitten/Library/')"].boolValue); > } > > static NSData *msoListMarkupWithoutProperHTMLElement() >@@ -177,15 +223,18 @@ TEST(PasteWebArchive, StripsMSOListWhenM > EXPECT_WK_STREQ("[\"text/html\"]", [webView stringByEvaluatingJavaScript:@"JSON.stringify(clipboardData.types)"]); > [webView stringByEvaluatingJavaScript:@"window.htmlInDataTransfer = clipboardData.values[0]"]; > EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.startsWith('<html xmlns:o=\"urn:schemas-microsoft-com:office:office\"')"].boolValue); >+ EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('<head><style class=\"WebKit-mso-list-quirks-style\">\\n<!--\\n')"].boolValue); >+ EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/* Style Definitions */')"].boolValue); > EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/* List Definitions */')"].boolValue); > EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('@list l0:level1')"].boolValue); >+ EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('}\\n\\n-->\\n</style></head>')"].boolValue); > EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('[if !supportLists]')"].boolValue); > EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('[endif]')"].boolValue); > EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes(' style=\"text-indent:-.25in;mso-list:l0 level1 lfo1\">')"].boolValue); >- EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/* Style Definitions */')"].boolValue); > EXPECT_FALSE([webView stringByEvaluatingJavaScript:@"htmlInDataTransfer.includes('/Users/webkitten/Library/')"].boolValue); > >- [webView stringByEvaluatingJavaScript:@"editor.innerHTML = htmlInDataTransfer"]; >+ [webView stringByEvaluatingJavaScript:@"editor.innerHTML = ''; editor.focus();"]; >+ [webView stringByEvaluatingJavaScript:@"document.execCommand('insertHTML', false, htmlInDataTransfer);"]; > [webView stringByEvaluatingJavaScript:@"getSelection().setPosition(document.querySelector('.MsoListParagraphCxSpLast'));"]; > [webView stringByEvaluatingJavaScript:@"getSelection().modify('move', 'forward', 'lineboundary');"]; > EXPECT_WK_STREQ("rgb(255, 0, 0)", [webView stringByEvaluatingJavaScript:@"document.queryCommandValue('foreColor')"]); >Index: Tools/TestWebKitAPI/Tests/WebKitCocoa/mso-list-compat-mode.html >=================================================================== >--- Tools/TestWebKitAPI/Tests/WebKitCocoa/mso-list-compat-mode.html (nonexistent) >+++ Tools/TestWebKitAPI/Tests/WebKitCocoa/mso-list-compat-mode.html (working copy) >@@ -0,0 +1,836 @@ >+<html xmlns:v="urn:schemas-microsoft-com:vml" >+xmlns:o="urn:schemas-microsoft-com:office:office" >+xmlns:w="urn:schemas-microsoft-com:office:word" >+xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" >+xmlns="http://www.w3.org/TR/REC-html40"> >+ >+<head> >+<meta http-equiv=Content-Type content="text/html; charset=utf-8"> >+<meta name=ProgId content=Word.Document> >+<meta name=Generator content="Microsoft Word 15"> >+<meta name=Originator content="Microsoft Word 15"> >+<link rel=File-List >+href="file:////Users/WebKitten/Library/Group%20Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_filelist.xml"> >+<!--[if gte mso 9]><xml> >+ <o:OfficeDocumentSettings> >+ <o:TargetScreenSize>800x600</o:TargetScreenSize> >+ </o:OfficeDocumentSettings> >+</xml><![endif]--> >+<link rel=themeData >+href="file:////Users/WebKitten/Library/Group%20Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_themedata.thmx"> >+<link rel=colorSchemeMapping >+href="file:////Users/WebKitten/Library/Group%20Containers/UBF8T346G9.Office/TemporaryItems/msohtmlclip/clip_colorschememapping.xml"> >+<!--[if gte mso 9]><xml> >+ <w:WordDocument> >+ <w:View>Normal</w:View> >+ <w:Zoom>0</w:Zoom> >+ <w:TrackMoves/> >+ <w:TrackFormatting/> >+ <w:PunctuationKerning/> >+ <w:ValidateAgainstSchemas/> >+ <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> >+ <w:IgnoreMixedContent>false</w:IgnoreMixedContent> >+ <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> >+ <w:DoNotPromoteQF/> >+ <w:LidThemeOther>EN-US</w:LidThemeOther> >+ <w:LidThemeAsian>ZH-CN</w:LidThemeAsian> >+ <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> >+ <w:Compatibility> >+ <w:BreakWrappedTables/> >+ <w:SnapToGridInCell/> >+ <w:WrapTextWithPunct/> >+ <w:UseAsianBreakRules/> >+ <w:DontGrowAutofit/> >+ <w:SplitPgBreakAndParaMark/> >+ <w:EnableOpenTypeKerning/> >+ <w:DontFlipMirrorIndents/> >+ <w:OverrideTableStyleHps/> >+ </w:Compatibility> >+ <w:BrowserLevel>MicrosoftInternetExplorer4</w:BrowserLevel> >+ <m:mathPr> >+ <m:mathFont m:val="Cambria Math"/> >+ <m:brkBin m:val="before"/> >+ <m:brkBinSub m:val="--"/> >+ <m:smallFrac m:val="off"/> >+ <m:dispDef/> >+ <m:lMargin m:val="0"/> >+ <m:rMargin m:val="0"/> >+ <m:defJc m:val="centerGroup"/> >+ <m:wrapIndent m:val="1440"/> >+ <m:intLim m:val="subSup"/> >+ <m:naryLim m:val="undOvr"/> >+ </m:mathPr></w:WordDocument> >+</xml><![endif]--><!--[if gte mso 9]><xml> >+ <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="false" >+ DefSemiHidden="false" DefQFormat="false" DefPriority="99" >+ LatentStyleCount="375"> >+ <w:LsdException Locked="false" Priority="0" QFormat="true" Name="Normal"/> >+ <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 1"/> >+ <w:LsdException Locked="false" Priority="9" SemiHidden="true" >+ UnhideWhenUsed="true" QFormat="true" Name="heading 2"/> >+ <w:LsdException Locked="false" Priority="0" SemiHidden="true" >+ UnhideWhenUsed="true" QFormat="true" Name="heading 3"/> >+ <w:LsdException Locked="false" Priority="9" SemiHidden="true" >+ UnhideWhenUsed="true" QFormat="true" Name="heading 4"/> >+ <w:LsdException Locked="false" Priority="9" SemiHidden="true" >+ UnhideWhenUsed="true" QFormat="true" Name="heading 5"/> >+ <w:LsdException Locked="false" Priority="9" SemiHidden="true" >+ UnhideWhenUsed="true" QFormat="true" Name="heading 6"/> >+ <w:LsdException Locked="false" Priority="9" SemiHidden="true" >+ UnhideWhenUsed="true" QFormat="true" Name="heading 7"/> >+ <w:LsdException Locked="false" Priority="9" SemiHidden="true" >+ UnhideWhenUsed="true" QFormat="true" Name="heading 8"/> >+ <w:LsdException Locked="false" Priority="9" SemiHidden="true" >+ UnhideWhenUsed="true" QFormat="true" Name="heading 9"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="index 1"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="index 2"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="index 3"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="index 4"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="index 5"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="index 6"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="index 7"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="index 8"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="index 9"/> >+ <w:LsdException Locked="false" Priority="39" SemiHidden="true" >+ UnhideWhenUsed="true" Name="toc 1"/> >+ <w:LsdException Locked="false" Priority="39" SemiHidden="true" >+ UnhideWhenUsed="true" Name="toc 2"/> >+ <w:LsdException Locked="false" Priority="39" SemiHidden="true" >+ UnhideWhenUsed="true" Name="toc 3"/> >+ <w:LsdException Locked="false" Priority="39" SemiHidden="true" >+ UnhideWhenUsed="true" Name="toc 4"/> >+ <w:LsdException Locked="false" Priority="39" SemiHidden="true" >+ UnhideWhenUsed="true" Name="toc 5"/> >+ <w:LsdException Locked="false" Priority="39" SemiHidden="true" >+ UnhideWhenUsed="true" Name="toc 6"/> >+ <w:LsdException Locked="false" Priority="39" SemiHidden="true" >+ UnhideWhenUsed="true" Name="toc 7"/> >+ <w:LsdException Locked="false" Priority="39" SemiHidden="true" >+ UnhideWhenUsed="true" Name="toc 8"/> >+ <w:LsdException Locked="false" Priority="39" SemiHidden="true" >+ UnhideWhenUsed="true" Name="toc 9"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Normal Indent"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="footnote text"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="annotation text"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="header"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="footer"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="index heading"/> >+ <w:LsdException Locked="false" Priority="35" SemiHidden="true" >+ UnhideWhenUsed="true" QFormat="true" Name="caption"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="table of figures"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="envelope address"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="envelope return"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="footnote reference"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="annotation reference"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="line number"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="page number"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="endnote reference"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="endnote text"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="table of authorities"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="macro"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="toa heading"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="List"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="List Bullet"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="List Number"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="List 2"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="List 3"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="List 4"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="List 5"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="List Bullet 2"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="List Bullet 3"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="List Bullet 4"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="List Bullet 5"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="List Number 2"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="List Number 3"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="List Number 4"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="List Number 5"/> >+ <w:LsdException Locked="false" Priority="10" QFormat="true" Name="Title"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Closing"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Signature"/> >+ <w:LsdException Locked="false" Priority="0" SemiHidden="true" >+ UnhideWhenUsed="true" Name="Default Paragraph Font"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Body Text"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Body Text Indent"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="List Continue"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="List Continue 2"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="List Continue 3"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="List Continue 4"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="List Continue 5"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Message Header"/> >+ <w:LsdException Locked="false" Priority="11" QFormat="true" Name="Subtitle"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Salutation"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Date"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Body Text First Indent"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Body Text First Indent 2"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Note Heading"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Body Text 2"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Body Text 3"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Body Text Indent 2"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Body Text Indent 3"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Block Text"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Hyperlink"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="FollowedHyperlink"/> >+ <w:LsdException Locked="false" Priority="22" QFormat="true" Name="Strong"/> >+ <w:LsdException Locked="false" Priority="20" QFormat="true" Name="Emphasis"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Document Map"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Plain Text"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="E-mail Signature"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="HTML Top of Form"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="HTML Bottom of Form"/> >+ <w:LsdException Locked="false" Priority="0" SemiHidden="true" >+ UnhideWhenUsed="true" Name="Normal (Web)"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="HTML Acronym"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="HTML Address"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="HTML Cite"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="HTML Code"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="HTML Definition"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="HTML Keyboard"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="HTML Preformatted"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="HTML Sample"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="HTML Typewriter"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="HTML Variable"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Normal Table"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="annotation subject"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="No List"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Outline List 1"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Outline List 2"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Outline List 3"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table Simple 1"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table Simple 2"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table Simple 3"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table Classic 1"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table Classic 2"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table Classic 3"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table Classic 4"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table Colorful 1"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table Colorful 2"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table Colorful 3"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table Columns 1"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table Columns 2"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table Columns 3"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table Columns 4"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table Columns 5"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table Grid 1"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table Grid 2"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table Grid 3"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table Grid 4"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table Grid 5"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table Grid 6"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table Grid 7"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table Grid 8"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table List 1"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table List 2"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table List 3"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table List 4"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table List 5"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table List 6"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table List 7"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table List 8"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table 3D effects 1"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table 3D effects 2"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table 3D effects 3"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table Contemporary"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table Elegant"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table Professional"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table Subtle 1"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table Subtle 2"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table Web 1"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table Web 2"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table Web 3"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Balloon Text"/> >+ <w:LsdException Locked="false" Priority="39" Name="Table Grid"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Table Theme"/> >+ <w:LsdException Locked="false" SemiHidden="true" Name="Placeholder Text"/> >+ <w:LsdException Locked="false" Priority="1" QFormat="true" Name="No Spacing"/> >+ <w:LsdException Locked="false" Priority="60" Name="Light Shading"/> >+ <w:LsdException Locked="false" Priority="61" Name="Light List"/> >+ <w:LsdException Locked="false" Priority="62" Name="Light Grid"/> >+ <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1"/> >+ <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2"/> >+ <w:LsdException Locked="false" Priority="65" Name="Medium List 1"/> >+ <w:LsdException Locked="false" Priority="66" Name="Medium List 2"/> >+ <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1"/> >+ <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2"/> >+ <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3"/> >+ <w:LsdException Locked="false" Priority="70" Name="Dark List"/> >+ <w:LsdException Locked="false" Priority="71" Name="Colorful Shading"/> >+ <w:LsdException Locked="false" Priority="72" Name="Colorful List"/> >+ <w:LsdException Locked="false" Priority="73" Name="Colorful Grid"/> >+ <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 1"/> >+ <w:LsdException Locked="false" Priority="61" Name="Light List Accent 1"/> >+ <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 1"/> >+ <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 1"/> >+ <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 1"/> >+ <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 1"/> >+ <w:LsdException Locked="false" SemiHidden="true" Name="Revision"/> >+ <w:LsdException Locked="false" Priority="34" QFormat="true" >+ Name="List Paragraph"/> >+ <w:LsdException Locked="false" Priority="29" QFormat="true" Name="Quote"/> >+ <w:LsdException Locked="false" Priority="30" QFormat="true" >+ Name="Intense Quote"/> >+ <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 1"/> >+ <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 1"/> >+ <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 1"/> >+ <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 1"/> >+ <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 1"/> >+ <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 1"/> >+ <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 1"/> >+ <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 1"/> >+ <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 2"/> >+ <w:LsdException Locked="false" Priority="61" Name="Light List Accent 2"/> >+ <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 2"/> >+ <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 2"/> >+ <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 2"/> >+ <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 2"/> >+ <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 2"/> >+ <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 2"/> >+ <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 2"/> >+ <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 2"/> >+ <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 2"/> >+ <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 2"/> >+ <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 2"/> >+ <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 2"/> >+ <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 3"/> >+ <w:LsdException Locked="false" Priority="61" Name="Light List Accent 3"/> >+ <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 3"/> >+ <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 3"/> >+ <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 3"/> >+ <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 3"/> >+ <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 3"/> >+ <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 3"/> >+ <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 3"/> >+ <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 3"/> >+ <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 3"/> >+ <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 3"/> >+ <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 3"/> >+ <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 3"/> >+ <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 4"/> >+ <w:LsdException Locked="false" Priority="61" Name="Light List Accent 4"/> >+ <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 4"/> >+ <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 4"/> >+ <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 4"/> >+ <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 4"/> >+ <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 4"/> >+ <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 4"/> >+ <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 4"/> >+ <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 4"/> >+ <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 4"/> >+ <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 4"/> >+ <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 4"/> >+ <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 4"/> >+ <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 5"/> >+ <w:LsdException Locked="false" Priority="61" Name="Light List Accent 5"/> >+ <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 5"/> >+ <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 5"/> >+ <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 5"/> >+ <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 5"/> >+ <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 5"/> >+ <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 5"/> >+ <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 5"/> >+ <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 5"/> >+ <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 5"/> >+ <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 5"/> >+ <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 5"/> >+ <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 5"/> >+ <w:LsdException Locked="false" Priority="60" Name="Light Shading Accent 6"/> >+ <w:LsdException Locked="false" Priority="61" Name="Light List Accent 6"/> >+ <w:LsdException Locked="false" Priority="62" Name="Light Grid Accent 6"/> >+ <w:LsdException Locked="false" Priority="63" Name="Medium Shading 1 Accent 6"/> >+ <w:LsdException Locked="false" Priority="64" Name="Medium Shading 2 Accent 6"/> >+ <w:LsdException Locked="false" Priority="65" Name="Medium List 1 Accent 6"/> >+ <w:LsdException Locked="false" Priority="66" Name="Medium List 2 Accent 6"/> >+ <w:LsdException Locked="false" Priority="67" Name="Medium Grid 1 Accent 6"/> >+ <w:LsdException Locked="false" Priority="68" Name="Medium Grid 2 Accent 6"/> >+ <w:LsdException Locked="false" Priority="69" Name="Medium Grid 3 Accent 6"/> >+ <w:LsdException Locked="false" Priority="70" Name="Dark List Accent 6"/> >+ <w:LsdException Locked="false" Priority="71" Name="Colorful Shading Accent 6"/> >+ <w:LsdException Locked="false" Priority="72" Name="Colorful List Accent 6"/> >+ <w:LsdException Locked="false" Priority="73" Name="Colorful Grid Accent 6"/> >+ <w:LsdException Locked="false" Priority="19" QFormat="true" >+ Name="Subtle Emphasis"/> >+ <w:LsdException Locked="false" Priority="21" QFormat="true" >+ Name="Intense Emphasis"/> >+ <w:LsdException Locked="false" Priority="31" QFormat="true" >+ Name="Subtle Reference"/> >+ <w:LsdException Locked="false" Priority="32" QFormat="true" >+ Name="Intense Reference"/> >+ <w:LsdException Locked="false" Priority="33" QFormat="true" Name="Book Title"/> >+ <w:LsdException Locked="false" Priority="37" SemiHidden="true" >+ UnhideWhenUsed="true" Name="Bibliography"/> >+ <w:LsdException Locked="false" Priority="39" SemiHidden="true" >+ UnhideWhenUsed="true" QFormat="true" Name="TOC Heading"/> >+ <w:LsdException Locked="false" Priority="41" Name="Plain Table 1"/> >+ <w:LsdException Locked="false" Priority="42" Name="Plain Table 2"/> >+ <w:LsdException Locked="false" Priority="43" Name="Plain Table 3"/> >+ <w:LsdException Locked="false" Priority="44" Name="Plain Table 4"/> >+ <w:LsdException Locked="false" Priority="45" Name="Plain Table 5"/> >+ <w:LsdException Locked="false" Priority="40" Name="Grid Table Light"/> >+ <w:LsdException Locked="false" Priority="46" Name="Grid Table 1 Light"/> >+ <w:LsdException Locked="false" Priority="47" Name="Grid Table 2"/> >+ <w:LsdException Locked="false" Priority="48" Name="Grid Table 3"/> >+ <w:LsdException Locked="false" Priority="49" Name="Grid Table 4"/> >+ <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark"/> >+ <w:LsdException Locked="false" Priority="51" Name="Grid Table 6 Colorful"/> >+ <w:LsdException Locked="false" Priority="52" Name="Grid Table 7 Colorful"/> >+ <w:LsdException Locked="false" Priority="46" >+ Name="Grid Table 1 Light Accent 1"/> >+ <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 1"/> >+ <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 1"/> >+ <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 1"/> >+ <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 1"/> >+ <w:LsdException Locked="false" Priority="51" >+ Name="Grid Table 6 Colorful Accent 1"/> >+ <w:LsdException Locked="false" Priority="52" >+ Name="Grid Table 7 Colorful Accent 1"/> >+ <w:LsdException Locked="false" Priority="46" >+ Name="Grid Table 1 Light Accent 2"/> >+ <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 2"/> >+ <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 2"/> >+ <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 2"/> >+ <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 2"/> >+ <w:LsdException Locked="false" Priority="51" >+ Name="Grid Table 6 Colorful Accent 2"/> >+ <w:LsdException Locked="false" Priority="52" >+ Name="Grid Table 7 Colorful Accent 2"/> >+ <w:LsdException Locked="false" Priority="46" >+ Name="Grid Table 1 Light Accent 3"/> >+ <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 3"/> >+ <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 3"/> >+ <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 3"/> >+ <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 3"/> >+ <w:LsdException Locked="false" Priority="51" >+ Name="Grid Table 6 Colorful Accent 3"/> >+ <w:LsdException Locked="false" Priority="52" >+ Name="Grid Table 7 Colorful Accent 3"/> >+ <w:LsdException Locked="false" Priority="46" >+ Name="Grid Table 1 Light Accent 4"/> >+ <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 4"/> >+ <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 4"/> >+ <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 4"/> >+ <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 4"/> >+ <w:LsdException Locked="false" Priority="51" >+ Name="Grid Table 6 Colorful Accent 4"/> >+ <w:LsdException Locked="false" Priority="52" >+ Name="Grid Table 7 Colorful Accent 4"/> >+ <w:LsdException Locked="false" Priority="46" >+ Name="Grid Table 1 Light Accent 5"/> >+ <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 5"/> >+ <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 5"/> >+ <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 5"/> >+ <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 5"/> >+ <w:LsdException Locked="false" Priority="51" >+ Name="Grid Table 6 Colorful Accent 5"/> >+ <w:LsdException Locked="false" Priority="52" >+ Name="Grid Table 7 Colorful Accent 5"/> >+ <w:LsdException Locked="false" Priority="46" >+ Name="Grid Table 1 Light Accent 6"/> >+ <w:LsdException Locked="false" Priority="47" Name="Grid Table 2 Accent 6"/> >+ <w:LsdException Locked="false" Priority="48" Name="Grid Table 3 Accent 6"/> >+ <w:LsdException Locked="false" Priority="49" Name="Grid Table 4 Accent 6"/> >+ <w:LsdException Locked="false" Priority="50" Name="Grid Table 5 Dark Accent 6"/> >+ <w:LsdException Locked="false" Priority="51" >+ Name="Grid Table 6 Colorful Accent 6"/> >+ <w:LsdException Locked="false" Priority="52" >+ Name="Grid Table 7 Colorful Accent 6"/> >+ <w:LsdException Locked="false" Priority="46" Name="List Table 1 Light"/> >+ <w:LsdException Locked="false" Priority="47" Name="List Table 2"/> >+ <w:LsdException Locked="false" Priority="48" Name="List Table 3"/> >+ <w:LsdException Locked="false" Priority="49" Name="List Table 4"/> >+ <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark"/> >+ <w:LsdException Locked="false" Priority="51" Name="List Table 6 Colorful"/> >+ <w:LsdException Locked="false" Priority="52" Name="List Table 7 Colorful"/> >+ <w:LsdException Locked="false" Priority="46" >+ Name="List Table 1 Light Accent 1"/> >+ <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 1"/> >+ <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 1"/> >+ <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 1"/> >+ <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 1"/> >+ <w:LsdException Locked="false" Priority="51" >+ Name="List Table 6 Colorful Accent 1"/> >+ <w:LsdException Locked="false" Priority="52" >+ Name="List Table 7 Colorful Accent 1"/> >+ <w:LsdException Locked="false" Priority="46" >+ Name="List Table 1 Light Accent 2"/> >+ <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 2"/> >+ <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 2"/> >+ <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 2"/> >+ <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 2"/> >+ <w:LsdException Locked="false" Priority="51" >+ Name="List Table 6 Colorful Accent 2"/> >+ <w:LsdException Locked="false" Priority="52" >+ Name="List Table 7 Colorful Accent 2"/> >+ <w:LsdException Locked="false" Priority="46" >+ Name="List Table 1 Light Accent 3"/> >+ <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 3"/> >+ <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 3"/> >+ <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 3"/> >+ <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 3"/> >+ <w:LsdException Locked="false" Priority="51" >+ Name="List Table 6 Colorful Accent 3"/> >+ <w:LsdException Locked="false" Priority="52" >+ Name="List Table 7 Colorful Accent 3"/> >+ <w:LsdException Locked="false" Priority="46" >+ Name="List Table 1 Light Accent 4"/> >+ <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 4"/> >+ <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 4"/> >+ <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 4"/> >+ <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 4"/> >+ <w:LsdException Locked="false" Priority="51" >+ Name="List Table 6 Colorful Accent 4"/> >+ <w:LsdException Locked="false" Priority="52" >+ Name="List Table 7 Colorful Accent 4"/> >+ <w:LsdException Locked="false" Priority="46" >+ Name="List Table 1 Light Accent 5"/> >+ <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 5"/> >+ <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 5"/> >+ <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 5"/> >+ <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 5"/> >+ <w:LsdException Locked="false" Priority="51" >+ Name="List Table 6 Colorful Accent 5"/> >+ <w:LsdException Locked="false" Priority="52" >+ Name="List Table 7 Colorful Accent 5"/> >+ <w:LsdException Locked="false" Priority="46" >+ Name="List Table 1 Light Accent 6"/> >+ <w:LsdException Locked="false" Priority="47" Name="List Table 2 Accent 6"/> >+ <w:LsdException Locked="false" Priority="48" Name="List Table 3 Accent 6"/> >+ <w:LsdException Locked="false" Priority="49" Name="List Table 4 Accent 6"/> >+ <w:LsdException Locked="false" Priority="50" Name="List Table 5 Dark Accent 6"/> >+ <w:LsdException Locked="false" Priority="51" >+ Name="List Table 6 Colorful Accent 6"/> >+ <w:LsdException Locked="false" Priority="52" >+ Name="List Table 7 Colorful Accent 6"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Mention"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Smart Hyperlink"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Hashtag"/> >+ <w:LsdException Locked="false" SemiHidden="true" UnhideWhenUsed="true" >+ Name="Unresolved Mention"/> >+ </w:LatentStyles> >+</xml><![endif]--> >+<style> >+<!-- >+ /* Font Definitions */ >+ @font-face >+ {font-family:"Cambria Math"; >+ panose-1:2 4 5 3 5 4 6 3 2 4; >+ mso-font-charset:0; >+ mso-generic-font-family:roman; >+ mso-font-pitch:variable; >+ mso-font-signature:-536870145 1107305727 0 0 415 0;} >+@font-face >+ {font-family:Calibri; >+ panose-1:2 15 5 2 2 2 4 3 2 4; >+ mso-font-charset:0; >+ mso-generic-font-family:swiss; >+ mso-font-pitch:variable; >+ mso-font-signature:-536859905 -1073697537 9 0 511 0;} >+ /* Style Definitions */ >+ p.MsoNormal, li.MsoNormal, div.MsoNormal >+ {mso-style-unhide:no; >+ mso-style-qformat:yes; >+ mso-style-parent:""; >+ margin-top:0in; >+ margin-right:0in; >+ margin-bottom:10.0pt; >+ margin-left:0in; >+ line-height:115%; >+ mso-pagination:widow-orphan; >+ font-size:11.0pt; >+ font-family:"Calibri",sans-serif; >+ mso-fareast-font-family:"Times New Roman"; >+ mso-bidi-font-family:"Times New Roman"; >+ mso-fareast-language:EN-US;} >+h3 >+ {mso-style-unhide:no; >+ mso-style-qformat:yes; >+ mso-style-link:"Heading 3 Char"; >+ mso-style-next:Normal; >+ margin-top:12.0pt; >+ margin-right:0in; >+ margin-bottom:3.0pt; >+ margin-left:0in; >+ line-height:115%; >+ mso-pagination:widow-orphan; >+ page-break-after:avoid; >+ mso-outline-level:3; >+ font-size:13.0pt; >+ font-family:"Arial",sans-serif; >+ mso-fareast-language:EN-US; >+ font-weight:bold;} >+p >+ {mso-style-update:auto; >+ mso-style-unhide:no; >+ mso-margin-top-alt:auto; >+ margin-right:0in; >+ margin-bottom:0in; >+ margin-left:0in; >+ margin-bottom:.0001pt; >+ mso-pagination:widow-orphan; >+ font-size:11.0pt; >+ mso-bidi-font-size:12.0pt; >+ font-family:"Arial",sans-serif; >+ mso-fareast-font-family:"Times New Roman"; >+ mso-bidi-font-family:"Times New Roman"; >+ mso-fareast-language:EN-US;} >+span.Heading3Char >+ {mso-style-name:"Heading 3 Char"; >+ mso-style-unhide:no; >+ mso-style-locked:yes; >+ mso-style-link:"Heading 3"; >+ mso-ansi-font-size:13.0pt; >+ mso-bidi-font-size:13.0pt; >+ font-family:"Arial",sans-serif; >+ mso-ascii-font-family:Arial; >+ mso-hansi-font-family:Arial; >+ mso-bidi-font-family:Arial; >+ mso-fareast-language:EN-US; >+ font-weight:bold;} >+.MsoChpDefault >+ {mso-style-type:export-only; >+ mso-default-props:yes; >+ font-size:10.0pt; >+ mso-ansi-font-size:10.0pt; >+ mso-bidi-font-size:10.0pt; >+ font-family:"Calibri",sans-serif; >+ mso-ascii-font-family:Calibri; >+ mso-hansi-font-family:Calibri;} >+@page WordSection1 >+ {size:8.5in 11.0in; >+ margin:1.0in 1.0in 1.0in 1.0in; >+ mso-header-margin:.5in; >+ mso-footer-margin:.5in; >+ mso-paper-source:0;} >+div.WordSection1 >+ {page:WordSection1;} >+ /* List Definitions */ >+ @list l0 >+ {mso-list-id:337470154; >+ mso-list-type:hybrid; >+ mso-list-template-ids:1678785270 67698703 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;} >+@list l0:level1 >+ {mso-level-tab-stop:none; >+ mso-level-number-position:left; >+ text-indent:-.25in;} >+@list l0:level2 >+ {mso-level-number-format:alpha-lower; >+ mso-level-tab-stop:none; >+ mso-level-number-position:left; >+ text-indent:-.25in;} >+@list l0:level3 >+ {mso-level-number-format:roman-lower; >+ mso-level-tab-stop:none; >+ mso-level-number-position:right; >+ text-indent:-9.0pt;} >+@list l0:level4 >+ {mso-level-tab-stop:none; >+ mso-level-number-position:left; >+ text-indent:-.25in;} >+@list l0:level5 >+ {mso-level-number-format:alpha-lower; >+ mso-level-tab-stop:none; >+ mso-level-number-position:left; >+ text-indent:-.25in;} >+@list l0:level6 >+ {mso-level-number-format:roman-lower; >+ mso-level-tab-stop:none; >+ mso-level-number-position:right; >+ text-indent:-9.0pt;} >+@list l0:level7 >+ {mso-level-tab-stop:none; >+ mso-level-number-position:left; >+ text-indent:-.25in;} >+@list l0:level8 >+ {mso-level-number-format:alpha-lower; >+ mso-level-tab-stop:none; >+ mso-level-number-position:left; >+ text-indent:-.25in;} >+@list l0:level9 >+ {mso-level-number-format:roman-lower; >+ mso-level-tab-stop:none; >+ mso-level-number-position:right; >+ text-indent:-9.0pt;} >+ol >+ {margin-bottom:0in;} >+ul >+ {margin-bottom:0in;} >+--> >+</style> >+<!--[if gte mso 10]> >+<style> >+ /* Style Definitions */ >+ table.MsoNormalTable >+ {mso-style-name:"Table Normal"; >+ mso-tstyle-rowband-size:0; >+ mso-tstyle-colband-size:0; >+ mso-style-noshow:yes; >+ mso-style-priority:99; >+ mso-style-parent:""; >+ mso-padding-alt:0in 5.4pt 0in 5.4pt; >+ mso-para-margin:0in; >+ mso-para-margin-bottom:.0001pt; >+ mso-pagination:widow-orphan; >+ font-size:10.0pt; >+ font-family:"Calibri",sans-serif; >+ mso-bidi-font-family:"Times New Roman";} >+</style> >+<![endif]--><!--[if gte mso 9]><xml> >+ <o:shapedefaults v:ext="edit" spidmax="1026"/> >+</xml><![endif]--><!--[if gte mso 9]><xml> >+ <o:shapelayout v:ext="edit"> >+ <o:idmap v:ext="edit" data="1"/> >+ </o:shapelayout></xml><![endif]--> >+</head> >+ >+<body lang=EN-US style='tab-interval:.5in'> >+<!--StartFragment--> >+ >+<h3>Some text <o:p></o:p></h3> >+ >+<p style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1'><![if !supportLists]><span >+style='mso-fareast-font-family:Arial;mso-bidi-font-family:Arial'><span >+style='mso-list:Ignore'>1.<span style='font:7.0pt "Times New Roman"'> >+</span></span></span><![endif]>Hello<o:p></o:p></p> >+ >+<p style='margin-left:.5in;text-indent:-.25in;mso-list:l0 level1 lfo1'><![if !supportLists]><span >+style='mso-fareast-font-family:Arial;mso-bidi-font-family:Arial'><span >+style='mso-list:Ignore'>2.<span style='font:7.0pt "Times New Roman"'> >+</span></span></span><![endif]>world<o:p></o:p></p> >+ >+<p>some other text <o:p></o:p></p> >+ >+<!--EndFragment--> >+</body> >+ >+</html> >+
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 182564
:
333269
|
333361
|
333362
|
333448
|
333449
|
333475
|
333520
|
333550
|
333610
|
333614
|
333653
|
333727
|
333761
|
333768
| 333810 |
334136