Title: [230663] trunk/Tools
Revision
230663
Author
aes...@apple.com
Date
2018-04-15 14:21:51 -0700 (Sun, 15 Apr 2018)

Log Message

[iOS] Add API tests for PDF find-in-page
https://bugs.webkit.org/show_bug.cgi?id=184634

Reviewed by Dan Bernstein.

* TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
* TestWebKitAPI/Tests/WebKit/find.pdf: Added.
* TestWebKitAPI/Tests/WebKitCocoa/WKPDFView.mm:
(-[TestFindDelegate findString]):
(-[TestFindDelegate _webView:didCountMatches:forString:]):
(-[TestFindDelegate _webView:didFindMatches:forString:withMatchIndex:]):
(-[TestFindDelegate _webView:didFailToFindString:]):
(loadWebView):
(TEST):

Modified Paths

Added Paths

Diff

Modified: trunk/Tools/ChangeLog (230662 => 230663)


--- trunk/Tools/ChangeLog	2018-04-15 17:38:01 UTC (rev 230662)
+++ trunk/Tools/ChangeLog	2018-04-15 21:21:51 UTC (rev 230663)
@@ -1,3 +1,20 @@
+2018-04-15  Andy Estes  <aes...@apple.com>
+
+        [iOS] Add API tests for PDF find-in-page
+        https://bugs.webkit.org/show_bug.cgi?id=184634
+
+        Reviewed by Dan Bernstein.
+
+        * TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj:
+        * TestWebKitAPI/Tests/WebKit/find.pdf: Added.
+        * TestWebKitAPI/Tests/WebKitCocoa/WKPDFView.mm:
+        (-[TestFindDelegate findString]):
+        (-[TestFindDelegate _webView:didCountMatches:forString:]):
+        (-[TestFindDelegate _webView:didFindMatches:forString:withMatchIndex:]):
+        (-[TestFindDelegate _webView:didFailToFindString:]):
+        (loadWebView):
+        (TEST):
+
 2018-04-13  Zalan Bujtas  <za...@apple.com>
 
         [LayoutReloaded] Update class documentation

Modified: trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj (230662 => 230663)


--- trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj	2018-04-15 17:38:01 UTC (rev 230662)
+++ trunk/Tools/TestWebKitAPI/TestWebKitAPI.xcodeproj/project.pbxproj	2018-04-15 21:21:51 UTC (rev 230663)
@@ -631,6 +631,7 @@
 		A16F66BA1C40EB4F00BD4D24 /* ContentFiltering.html in Copy Resources */ = {isa = PBXBuildFile; fileRef = A16F66B91C40EA2000BD4D24 /* ContentFiltering.html */; };
 		A17991881E1C994E00A505ED /* SharedBuffer.mm in Sources */ = {isa = PBXBuildFile; fileRef = A17991861E1C994E00A505ED /* SharedBuffer.mm */; };
 		A179918B1E1CA24100A505ED /* SharedBufferTest.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A17991891E1CA24100A505ED /* SharedBufferTest.cpp */; };
+		A17EAC55208305A00084B41B /* find.pdf in Copy Resources */ = {isa = PBXBuildFile; fileRef = A17EAC542083056E0084B41B /* find.pdf */; };
 		A180C0FA1EE67DF000468F47 /* RunOpenPanel.mm in Sources */ = {isa = PBXBuildFile; fileRef = A180C0F91EE67DF000468F47 /* RunOpenPanel.mm */; };
 		A1C4FB731BACD1CA003742D0 /* pages.pages in Copy Resources */ = {isa = PBXBuildFile; fileRef = A1C4FB721BACD1B7003742D0 /* pages.pages */; };
 		A1DF74321C41B65800A2F4D0 /* AlwaysRevalidatedURLSchemes.mm in Sources */ = {isa = PBXBuildFile; fileRef = A1DF74301C41B65800A2F4D0 /* AlwaysRevalidatedURLSchemes.mm */; };
@@ -949,6 +950,7 @@
 				CD59F53419E9110D00CF1835 /* file-with-mse.html in Copy Resources */,
 				524BBC9E19DF72C0002F1AF1 /* file-with-video.html in Copy Resources */,
 				1A02C870125D4CFD00E3F4BD /* find.html in Copy Resources */,
+				A17EAC55208305A00084B41B /* find.pdf in Copy Resources */,
 				C5101C4F176B8D9200EE9B15 /* findRanges.html in Copy Resources */,
 				932AE53D1D371047005DFFAF /* focus-inputs.html in Copy Resources */,
 				1A7E8B3618120B2F00AEB74A /* FragmentNavigation.html in Copy Resources */,
@@ -1687,6 +1689,7 @@
 		A17991861E1C994E00A505ED /* SharedBuffer.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = SharedBuffer.mm; sourceTree = "<group>"; };
 		A17991891E1CA24100A505ED /* SharedBufferTest.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = SharedBufferTest.cpp; sourceTree = "<group>"; };
 		A179918A1E1CA24100A505ED /* SharedBufferTest.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SharedBufferTest.h; sourceTree = "<group>"; };
+		A17EAC542083056E0084B41B /* find.pdf */ = {isa = PBXFileReference; lastKnownFileType = image.pdf; name = find.pdf; path = Tests/WebKit/find.pdf; sourceTree = SOURCE_ROOT; };
 		A180C0F91EE67DF000468F47 /* RunOpenPanel.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = RunOpenPanel.mm; sourceTree = "<group>"; };
 		A18AA8CC1C3FA218009B2B97 /* ContentFiltering.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ContentFiltering.h; sourceTree = "<group>"; };
 		A1A4FE5D18DD3DB700B5EA8A /* Download.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = Download.mm; sourceTree = "<group>"; };
@@ -2463,6 +2466,7 @@
 				F4C2AB211DD6D94100E06D5B /* enormous-video-with-sound.html */,
 				F407FE381F1D0DE60017CF25 /* enormous.svg */,
 				F41AB99B1EF4692C0083FA08 /* file-uploading.html */,
+				A17EAC542083056E0084B41B /* find.pdf */,
 				93575C551D30366E000D604D /* focus-inputs.html */,
 				F4F405BA1D4C0CF8007A9707 /* full-size-autoplaying-video-with-audio.html */,
 				CD78E11B1DB7EA360014A2DE /* FullscreenDelegate.html */,

Added: trunk/Tools/TestWebKitAPI/Tests/WebKit/find.pdf (0 => 230663)


--- trunk/Tools/TestWebKitAPI/Tests/WebKit/find.pdf	                        (rev 0)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKit/find.pdf	2018-04-15 21:21:51 UTC (rev 230663)
@@ -0,0 +1,223 @@
+%PDF-1.3
+%\xC4\xE5\xF2\xE5\xEB\xA7\xF3\xA0\xD0\xC4\xC6
+4 0 obj
+<< /Length 5 0 R /Filter /FlateDecode >>
+stream
+x\x8D\x90\xCDj\xC30\x84\xEFz\x8A9Z\x87ؒ,E\xF2\xB5Ŵ\x{116C90}C\xE9\xC9\xE4\x87b\xA78\xF4\xF5\xBB\x92\xE3Q(ŇiW\xDF\xECx\xC4#\xBC\xC1և2\xF8\xE0a\xB7V\x97\xDA\xE8\xDA\xE2z\xC0TO\x93\xC6iB\xF5ȵ\x9B\xA0\xD37u\xF1\xA17
+\x9CU"\xAA>\xAA\xD6g\xE8g#\xC4D\x88\x98l"y\x84*\xDF(\xDF8n(l\xD6\xE3\xEC!\xBA\xC4SJ)\xEA\xA0\xCD<\xC8\xD5AkЀ\x8A(nFG\x9F\x97\x83}\xA0\xA5p\xA5\xFDgS\xE5l\xF8E7.\xA7\xBF\xA1\xA0/\x89\x8Dslt\xAF\xB8כ\xE9~\xCF\xE7ڧ\xFE;\xE8埋`N\x99e\xAB\x91ec\xF7\x9B\xE4aP<\xB3IWN;\xAB\xC1i_\xF2\x94\x8B\xE2u\x99m[J\xEF\xE0yi\xAD\xC0Vb+\xB0\xFBPu!
+endstream
+endobj
+5 0 obj
+260
+endobj
+2 0 obj
+<< /Type /Page /Parent 3 0 R /Resources 6 0 R /Contents 4 0 R /MediaBox [0 0 612 792]
+>>
+endobj
+6 0 obj
+<< /ProcSet [ /PDF /Text ] /ColorSpace << /Cs1 7 0 R /Cs2 8 0 R >> /ExtGState
+<< /Gs1 10 0 R /Gs2 11 0 R >> /Font << /TT1 9 0 R >> >>
+endobj
+10 0 obj
+<< /Type /ExtGState /AAPL:AA false >>
+endobj
+11 0 obj
+<< /Type /ExtGState /AAPL:AA true >>
+endobj
+12 0 obj
+<< /Length 13 0 R /N 3 /Alternate /DeviceRGB /Filter /FlateDecode >>
+stream
+x\x9D\x96wTS\xD9\x87Ͻ7\xBD\xD0" %\xF4z	 \xD2;HQ\x89I\x80P\x86\x84&vDF)VdT\xC0G\x87"cE\x83\x82b\xD7	\xF2P\xC6\xC1QDE\xE5݌k	\xEF\xAD5\xF3ޚ\xFD\xC7Y\xDF\xD9\xE7\xB7\xD7\xD9g\xEF}׺P\xFC\x82\xC2tX\x804\xA1X\xEE\xEB\xC1\\xCB\xC4\xF7X\xC0\xE1ffG\xF8D\xD4\xFC\xBD=\x99\x99\xA8HƳ\xF6\xEE.\x80d\xBB\xDB,\xBFP&s\xD6\xFF\x91"7C$
+E\xD56<~&\xE5\x94S\xB3\xC52\xFF\xCA\xF4\x95)2\x8612\xA1	\xA2\xAC"\xE3įl\xF6\xA7\xE6+\xBBɘ\x97&\xE4\xA1Y\xCE\xBC4\x9E\x8C\xBBPޚ%ᣌ\xA1\\x98%\xE0g\xA3|e\xBDTI\x9A\xE5\xF7(\xD3\xD3\xF8\x9CL0\x99_\xCC\xE7&\xA1l\x892E\xEE\x89\xF2\x94\xC49\xBCr\x8B\xF99h\x9Ex\xA6g\xE4\x8A\x89Ib\xA6טi\xE5\xE8\xC8f\xFA\xF1\xB3S\xF9b1+\x94\xC3M\xE1\x88xL\xCF\xF4\xB4\x8E0\x80\xAFo\x96E%Ym\x99h\x91\xED\xAD\xED\xEDY\xD6\xE6h\xF9\xBF\xD9\xDF~S\xFD=\xC8z\xFBU\xF1&\xECϞA\x8C\x9EY\xDFl\xEC\xAC/\xBD\xF6$Z\x9B\xB3\xBE\x95U\xB4m@\xE5\xE1\xACO\xEF \xF2\xB4ޜ\xF3\x86l^\x92\xC4\xE2'\x8B\xEC\xECls\x9Fk.+\xE87\xFB\x9F\x82oʿ\x869\xF7\x99\xCB\xEE\xFBV;\xA6?\x81#I3eE妧\xA6KD\xCC\xCC\x97\xCFd\xFD\xF7\xFF\xE3\xC09i\xCD\xC9\xC3,\x9C\x9F\xC0\xF1\x85\xE8UQ\xE8\x94	\x84\x89h\xBB\x85<\x81X\x90.d
+\x84\xD5\xE16'~\x9Dkhu_}\x859P\xB8I\xC8o=C#$n?z}\xEB[1
+Ⱦ\xBCh\xAD\x91\xAFs\x8F2z\xFE\xE7\xFA\\x8An\xE1LA"S\xE6\xF6\x8Fdr%\xA2,\xA3߄l\xC1\x90t\xA0
+4\x81.0,`+\x803p\xDE \x84\x80H\x96.Hi@\xB2A>\xD8
+A1\xD8v\x83jpԁz\xD0N\x826p\W\xC0+p\x80G@
+\x86\xC1K0ށi\x82\xF0\xA2A\xAA\x90\xA4\x99B\xD6ZyCAP8\xC5C\x89\x90\x92@\xF9\xD0&\xA8*\x83\xAA\xA1CP=\xF4#t\xBA]\x83\xFA\xA0\xD0 4\xFD}\x84\x98\xD3a+\xD8\xB6\x80ٰ;G\xC2\xCB\xE0Dx\x9C\xC0\xDB\xE1J\xB8>\xB7\xC2\xE1\xF0,\x85_“@\xC8\xD1FX\xF1DB\x90X$!k\x91"\xA4\xA9E\x9A\x90\xA4\xB9\x8DH\x91q\xE4\x87\xA1a\x98\xC6\xE3\x87Y\x8C\xE1bVa\xD6bJ0՘c\x98VL\xE66f3\x81\xF9\x82\xA5bձ\xA6X'\xAC?v	6\x9B\x8D-\xC4V`\x8F`[\xB0\x97\xB1\xD8a\xEC;\xC7\xC0\xE2p~\xB8\2n5\xAE\xB7׌\xBB\x80\xEB\xC3+\xE1&\xF1x\xBC*\xDE\xEF\x82\xC1s\xF0b|!\xBE
+ߏƿ'\x90	Zk\x82!\x96 $l$T\xE7\xFD\x84\xC24Q\x81\xA8Ot"\x86y\xC4\b)\xB1\x8E\xD8A\xBCI&N\x93I\x86$R$)\x99\xB4\x81TIj"]&=&\xBD!\x93\xC9:dGrY@^O\xAE$\x9F _%\x92?P\x94(&OJEB\xD9N9J\xB9@y@yC\xA5R+\xA8n\xD4X\xAA\x98\xBA\x9DZO\xBDD}J}/G\x933\x97\xF3\x97\xE3ɭ\x93\xAB\x91k\x95\xEB\x97{%O\x94חw\x97_.\x9F'_!J\xFE\xA6\xFC\xB8Q\xC1@\xC1S\x81\xA3\xB0V\xA1F\xE1\xB4\xC2=\x85IE\x9A\xA2\x95b\x88b\x9Ab\x89b\x83\xE25\xC5Q%\xBC\x92\x81\x92\xB7O\xA9@\xE9\xB0\xD2%\xA5!BӥyҸ\xB4M\xB4:\xDAe\xDA0G7\xA4\xFBӓ\xE9\xC5\xF4\xE8\xBD\xF4	e%e[\xE5(\xE5\xE5\xE5\xB3\xCAR\xC20`\xF83R\xA5\x8C\x93\x8C\xBB\x8C\x8F\xF34\xE6\xB9\xCF\xE3\xCF\xDB6\xAFi^\xFF\xBC)\x95\xF9*n*|\x95"\x95f\x95\x95\x8F\xAALUo\xD5՝\xAAm\xAAO\xD40j&jaj\xD9j\xFB\xD5.\xAB\x8Dϧ\xCFw\x9Eϝ_4\xFF\xE4\xFC\x87갺\x89z\xB8\xFAj\xF5\xC3\xEA=\xEA\x93\x9A\xBEU\x974\xC65\x9An\x9Aɚ\xE5\x9A\xE74ǴhZ\xB5Z\xE5Z\xE7\xB5^0\x95\x99\xEE\xCCTf%\xB3\x8B9\xA1\xAD\xAE\xED\xA7-\xD1>\xA4ݫ=\
 xADc\xA8\xB3Xg\xA3N\xB3\xCE]\x92.[7A\xB7\\xB7SwBOK/X/_\xAFQ\xEF\xA1>Q\x9F\xAD\x9F\xA4\xBFG\xBF[\xCA\xC0\xD0 \xDA`\x8BA\x9B\xC1\xA8\xA1\x8A\xA1\xBFa\x9Ea\xA3\xE1c#\xAA\x91\xAB\xD1*\xA3Z\xA3;\xC68c\xB6q\x8A\xF1>\xE3[&\xB0\x89\x9DI\x92I\x8D\xC9MS\xD8\xD4\xDET`\xBAϴ\xCFk\xE6h&4\xAB5\xBBǢ\xB0\xDCYY\xACF֠9\xC3<\xC8|\xA3y\x9B\xF9+=\x8BX\x8B\x9D\xDD_,\xED,S-\xEB,Y)YXm\xB4\xEA\xB0\xFA\xC3\xDAĚk]c}džj\xE3c\xB3Φ\xDD浭\xA9-\xDFv\xBF\xED};\x9A]\xB0\xDD\xBBN\xBB\xCF\xF6\xF6"\xFB&\xFB1=\x87x\x87\xBD\xF7\xD8tv(\xBB\x84}\xD5\xEB\xE8\xE1\xB8\xCE\xF1\x8C\xE3'{'\xB1\xD3I\xA7ߝY\xCE)\xCE+Σ\xF0\xD4-r\xD1q\xE1\xB8r\x91.d.\x8C_xp\xA1\xD4Uە\xE3Z\xEB\xFA\xCCM׍\xE7v\xC4m\xC4\xDD\xD8=\xD9\xFD\xB8\xFB+K\x91G\x8Bǔ\xA7\x93\xE7\xCF^\x88\x97\xAFW\x91W\xAF\xB7\x92\xF7b\xEFj\xEF\xA7>:>\x89>\x8D>\xBEv\xBE\xAB}/\xF8a\xFD\xFDv\xFA\xDD\xF3\xD7\xF0\xE7\xFA\xD7\xFBO8\xAC	\xE8
+\xA4FV>2	u\xC3\xC1\xC1\xBB\x82/\xD2_$\\xD4B\xFCCv\x85<	5]\xFAs.,4\xAC&\xECy\xB8Ux~xw-bEDCĻH\x8F\xC8\xD2\xC8G\x8B\x8DKwF\xC9G\xC5E\xD5GME{E\x97EK\x97X,Y\xB3\xE4F\x8CZ\x8C \xA6={$vr\xA9\xF7\xD2\xDDK\x87\xE3\xEC\xE2
+\xE3\xEE.3\\x96\xB3\xEC\xDAr\xB5\xE5\xA9\xCBϮ\x90_\xC1Yq*\xDF\xFF\x89©\xE5L\xAE\xF4_\xB9w\xE5ד\xBB\x87\xFB\x92\xE7\xC6+\xE7\x8D\xF1]\xF8e\xFC\x91\x97\x84\xB2\x84\xD1D\x97\xC4]\x89cI\xAEII\xE3OA\xB5\xE0u\xB2_\xF2\x81䩔\x90\x94\xA3)3\xA9ѩ\xCDi\x84\xB4\xF8\xB4\xD3B%a\x8A\xB0+]3='\xBD/\xC34\xA30C\xBA\xCAi\xD5\xEEU\xA2@ёL(sYf\xBB\x98\x8E\xFEL\xF5H\x8C$\x9B%\x83Y\xB3j\xB2\xDEgGe\x9F\xCAQ\xCC\xE6\xF4\xE4\x9A\xE4n\xCB\xC9\xF3\xC9\xFB~5f5wug\xBEv\xFE\x86\xFC\xC15\xEEk\xAD\x85֮\۹Nw]\xC1\xBA\xE1\xF5\xBE\xEB\x8Fm mH\xD9\xF0\xCBFˍe\xDFn\x8A\xDE\xD4Q\xA0Q\xB0\xBE`h\xB3\xEF\xE6\xC6B\xB9BQ\xE1\xBD-\xCE[l\xC5ll\xED\xDDf\xB3\xADjۗ"^\xD1\xF5b\xCB\xE2\x8A\xE2O%ܒ\xEB\xDFY}W\xF9\xDD\xCC\xF6\x84\x{DF65}\xF6\xA5\xFBw\xE0vw\xDC\xDD\xE9\xBA\xF3X\x99bY^\xD9Ю\xE0]\xAD\xE5\xCC\xF2\xA2\xF2\xB7\xBBW\xEC\xBEVa[q`i\x8Fd\x8F\xB42\xA8\xB2\xBDJ\xAFjGէ\xEA\xA4\xEA\x81\x8F\x9A\xE6\xBD\xEA{\xB7\xED\x9D\xDA\xC7\xDB׿\xDFm\xD3\x8D\xC5>\xBC\xC8\xF7Pk\xADAm\xC5a\xDC\xE1\xAC\x
 C3\xCF\xEB\xA2꺿g_D\xEDH\xF1\x91\xCFG\x85G\xA5\xC7u\xD5;\xD4\xD77\xA87\x946\x92Ʊ\xE3q\xC7o\xFD\xE0\xF5C{\xAB\xE9P3\xA3\xB9\xF88!9\xF1\xE2\xC7\xF8\xEF\x9E<\xD9y\x8A}\xAA\xE9'\xFD\x9F\xF6\xB6\xD0Z\x8AZ\xA1\xD6\xDC։\xB6\xA46i{L{\xDF\xE9\x80ӝ\xCE-?\x9B\xFF|\xF4\x8C\x{1996B3}\xCAgKϑ\xCE\x9C\x9B9\x9Fw~\xF2Bƅ\xF1\x8B\x89\x87:Wt>\xBA\xB4\xE4ҝ\xAE\xB0\xAE\xDEˁ\x97\xAF^\xF1\xB9r\xA9۽\xFB\xFCU\x97\xABg\xAE9];}\x9D}\xBD\xED\x86\xFD\x8D\xD6\xBB\x9E\x96_\xEC~i\xE9\xB5\xEFm\xBD\xE9p\xB3\xFD\x96㭎\xBE}\xE7\xFA]\xFB/\xDE\xF6\xBA}\xE5\x8E\xFF\x9D\x8B\xFA\xEE.\xBE{\xFF^\xDC=\xE9}\xDE\xFD\xD1\xA9^?\xCCz8\xFDh\xFDc\xEC\xE3\xA2'
+O*\x9E\xAA?\xAD\xFD\xD5\xF8\xD7f\xA9\xBD\xF4\xEC\xA0\xD7`ϳ\x88g\x8F\x86\xB8C/\xFF\x95\xF9\xAFO\xC3ϩ\xCF+F\xB4F\xEAG\xADGό\xF9\x8C\xDDz\xB1\xF4\xC5\xF0ˌ\x97\xD3ㅿ)\xFE\xB6\xF7\x95ѫ\x9F~w\xFB\xBDgb\xC9\xC4\xF0k\xD1\xEB\x99?Jި\xBE9\xFA\xD6\xF6m\xE7d\xE8\xE4\xD3wi獵\x8Aޫ\xBE?\xF6\x81\xFD\xA1\xFBc\xF4Ǒ\xE9\xECO\xF8O\x95\x9F\x8D?w|	\xFC\xF2x&mf\xE6\xDF\xF7\x84\xF3\xFB
+endstream
+endobj
+13 0 obj
+2612
+endobj
+7 0 obj
+[ /ICCBased 12 0 R ]
+endobj
+14 0 obj
+<< /Length 15 0 R /N 1 /Alternate /DeviceGray /Filter /FlateDecode >>
+stream
+x\xA5WX\x93\xD7>\xFFH\xC2J\xD8SF\xD8\xC82\xA0\xEC\x99dATbH!\x82\x80\xB8(\xC5
+\xD6--\x8AR\xB4Z(.\xD4\xE2\xA0nP\xEB\xB8PK\xA5\xAB\xB8\xB0z\xCF	\xA0\xD0\xF6\xB9\xF7>\xCF\xCD\xFF\xFE\xF7|g|\xEB=\xDF@]ȕH\xB2q@\x8E8_\xCBN\x9E\x99\x9C¤\xDD
+@\xA8G\xA0\xCA\xE5\xE5I\xD8\xD1\xD1p
+\xE7\x8A\xE8=\xF1\xF7\xB2`Hr\xC3\xED5q\xEC\xBF\xF6(|A\xCE:[?\x8F\x97\xE6+\xAD\x8F'\x91\xE6\xA0h\xE5\xE6\xF2%\x87B\xAC\x95q*
+*\xA3k\xA1\x98\x84\xC4\xA9\x88\xC7\x91r\x8B\x98!ܜ.\xD3\xD9љ-\xCDMe\xFF\x83\xD5h\xD1\xFF\xF3\xCBɖ!\xBB\xD1\xCF6\x95\xBC\xAC\xB8p\xF8v\x84\xF6\x97\xF1\xB9\x81\xBBC|\x98\xC7+\x8AŏD\x89\x91\xFB\x80\x9BI\xF2\xA7\xC7B\xF1<YVb{\x88\xEBӥ\xC1	\xFBB|[(Ex\x84N\xB10>	bc\x88\xC3\xC4\xF3"\xA3 \xF6\x84X\xC8\xCBH\x81\xD8\xE2\xA1\x80\x83\xF2cF\\xE5s\xE2!\x86\xFA\x88\xA7\xD2\xDCX4\xDFқ/\x91\x93\xE9Y\xB9\xE1\xC83(\xFF.\xAF \xC9\xE56\x90\x9DPٕ\xC9+\x8B\x86\xD8
+\xE2\x82\xEC4\xEEC1\x90\xE4G\xA3=a\x9F(ΎDz\xFD!\xAE\xE4\xC9\xFD\x85}JW\xBE0\xE5\xCC\xAAY\xBE4\xAD\x85\xB6Q\xE3\xD3E\xC1\x88\x83!.JC\x91\xFAK=!ɖ\xF3Ƅ\xFAN*\x8BE\xBECi\xC1q\x8A!\xE2\xC5R\xAE4(b+Z+Hĸ@r\xC1<\xF8\x97Ġ0A\x819\xCA\\x90Z`[\x9C%\x86M
+g\xE4\x81,(π\xB8\xF7\xE38\xEA\xA3h\x8D\x8E\xE4\x82t83\xAE\x932\xAEY\x87\xF6ȅ+\xF5о}\xF2}y\xA3\xFA\xA1\xBE㯁\x8E\xC1B4t\xCB%\x85о\xD8\x80Rˀx\xBCg\xC8#g-\xB7u\xC44\x8E\xB4\xF4\x8FjɅ+\xF8r]#됗#\xB6@\x9BŠ\x8E!\xDB䞓\xBA$\x8B\x9C
+\x9BA\xFA\x90,\xB96)\x9CQ\xE4ro\xB9lL\xEB'ϑo\xFD\xB5·\xB6\x8E\xF7~|\xBC\xC6b|\xC6+\xEE\x9C+=\x8F\xC6'Z\xF3ڝ5\xBA\xFAS4\xE5\xD7\xC8l$\x92\xAAU1\x9C9\xB5r\x8B\x91\xEF\xCCR\xE9\\xEF\xCA\xEA\xC1\xFF\x90\xB5O\xD9\xD3\xEE0!oQ\xE3y!g
+\xFFo\xBC\x80\xBA(\xD7)W)(7\xBE\xA1tR\xFA \xBAK\xB9\x9F;\xED\x89\xC7{\xC4\xFC+\x82>\x8E1`\x84Y<\xB9\xE5">(/\xB7\xF3S\xCEF\xF6\xF9\xCB!׋8˖\xEF\x82\x96ʬ@\x9E\xD7\xA8\x9F\xF3\x91\xA3-\x83<E\xDCp\x80\x8C\x9F\xBB-\xE3N@{I\xAB`v\xAD<u0\xEB՚\xCF˵ȣ\xDDI6\xA5\xDEPi/I\xAF1\x90H\xE6Ԗ$\x9FFQ\xCB#_F\x82R{\xD6!\xD6k\xAB\x9E\xF5\x9C\xF5\xE0\xD3\xD6-\xD6o\xACN\xD6.8\xF2\x84XO%\x8E\xCDD\xD1\x98\xB0\xD7B\x9C&\x9A娞h\x85Ϸ\xD7Md\xF8\xC89\x9A\xC8p\xC47\xDE(\xA3\x91\x8F\xF9\xA3\x9C\xCF\xFDq\xCA\xE35-4,S\x99\xA3'u<\xF7P|\xC73e\xEC\xB3h|F'V\x84\x91\xEC\xC8OÜ\xE1Ġ1l.6c\x98\xC2Ǚ\xE1\x919Ì\xC1Ѕ\xA3\xA1kF c\xD2\xC7x\x8C\x9Cqd:\xEF\x88acu\xE1SK\x86\xA3cL@\xFE	!\xA4\xF2\x9A\xC5\xF5\xF7\xAF>2'x\x89*\x9Ah\xFC\xA9\xC2\xE8\xF0d\x8Eh\xA9	c:\xC7\xE2*gȄ\x93\x955\x89\xC0h\x87\xC6\x9Dv1\xAC%\xCC	sP%FU2\x9B%\xCF\xE1?\x9CҘt"9\xB02E&\xC9&]H\xFFQ\x8C\xAA\x957|P\xAD\xA9\xDE\xA4\xF5%IwT\xC7\xC6{w
 \x
 89\xAAh\xFFl\xFD\xF8\x93!\xA0zR\xAD\xA9ATk\xF9\xDEr度\xD4Pj0`R\x9D\x90\x9C:\x85\xB1\x9A\x95/(\x84wr%ERQ\x860\x9FɆ\xB7\x93#\xE69\xDA3\x9DYN\xF0\xEB\x86\xEELh\xCFc\xE4w!L\xA7\x83'\x93\x8C\xC8H\xF4\xA2%x\x9F\xD2\xFA\xF0\xABj\xBF\xD6\xD0+7\xE0\xBF\x99A\xF0\xE2A2\x98\xFD\xC2LJadK\xC02P*\xC1\xB0l;\xC1P\xC0ap\xB4\x82\xD3\xE0p	\\x9D\xE0.\xFC\x9E\xF4\x82'`\xBC\xC3\x86\xD10:\xA6\x89\xE9c&\x98%f\x879c\xEE\x98/\x84E`\xB1X2\x96\x86e`bL\x86\x95`\x9Fa\x95\xD8:l+\xB6\xABþŚ\xB1\xD3\xD8\xECv\xEB\xC1\xFA\xB1?\xB0\xB78\x81\xAB\xE0Z\xB8n\x85O\xC1\xDDq6\x8E\xC7\xE3\xB3\xF1|>^\x8C\x97\xE1\xAB\xF0\xCDx+^\x8F7\xE2\xA7\xF1Kx'ލ?\xC1\x87@(:\x84)\xE1@\xB8D\x91B\xA4Rb1QAT5D\xAC\xED\xC4+\xA2\x9B ސTR\x93d\x920\x8B\xA1d\xC9#瓋ɕ\xE4Vr\xD9H\x9E%o\x90=\xE4 \xF9\x9EB\xA7R\xEC(\x9Ee&%\x83\xB2\x80RN\xA9\xA2\xD4R\x8ER\xCE\xC1
+\xDDKyI\xA5Ru`~\xDC`ޒ\xA9\x99ԅԕ\xD4\xEDԃ\xD4S\xD4kԇ\xD4!\x8D\xA6O\xB3\xA3\xF9Тh\Z>\xAD\x9C\xB6\x85VO;I\xBBN륽VPV0QpVVHQ+\x94*T)\xECW8\xA1p]\xE1\x91°\xA2\x9A\xA2\xA5\xA2\xA7b\x94"_\xB1Hq\xB5\xE2\xC5\xC5+\x8A\xBD\x8A\xC3J\xEAJ\xD6J>J\xF1J\x99J˔6+5(\x9DS\xBA\xA7\xF4\YY\xD9L\xD9C9FY\xA4\xBCTy\xB3\xF2!\xE5\xF3\xCA=\xCAoT4TlUTRUd*\xABT\xF6\xAA\x9CR\xB9\xA3\xF2\x9CN\xA7[\xD1\xFD\xE9)\xF4|\xFA*z\xFD\xFD\xFD5C\x93\xE1\xC8\xE00\xF8\x8C%\x8CjF#\xE3:㩪\xA2\xAA\xA5*[u\x8Ej\xB1j\x95\xEA\xD5+\xAAj\x8AjVjj\\xB5\xC5j\xD5j\xCDj\xB7Ԇ\xD45՝ԣ\xD4s\xD4W\xAA\xEFW\xBF\xA0ާAӰ\xD2\xD2\xE0k\x94i\xEC\xD68\xA3\xF1P\x93\xD04\xD7\xD0\xE4i~\xA6\xB9G\xF3\x9Cf\xAFU\xCBZ\x8B\xA3\x95\xA9U\xA9\xF5\x8D\xD6e\xADAm+\xEDiډڅ\xDA\xD5\xDAǵ\xBBu+\x8EN\xB6\xCEj\x9D\xC3:]:ou\x8Dtٺ\xDD\xBA+\xBA\xD7u_\xE9M\xD2\xF3\xD7\xE8U\xE8\xD4\xEB\xD4{\xAB\xCF\xD4\xD2\xCF\xD2_\xABL\xFF\xBEi`kc\xB0\xC0`\x87\xC19\x83\x81IZ\x93\xBC&\xF1&UL:<\xE9'C\xDC\xD0\xD60\xD6p\xA1\xE1n\xC3
 \xC3!#c\xA3#\x89\xD1\xA33F\xC6:\xC6\xFEƙ\xC6\x8CO\xF7\x9Bh\x9A\xF8\x9A\x88L6\x98\x9C4y\xCC\xD4f\xB2\x99\xD9\xCC\xCD̳\xCCASC\xD3PS\x99\xE9.\xD3˦\xC3f\xD6f	f\xA5f\xCD\xEE\x9B+\x99\xBB\x9B\xA7\x9Bo0o3\xB40\xB1\x98aQbq\xC0\xE2'KEKwK\xA1\xE5&\xCBv\xCBWV\xD6VIV˭\x8EY\xF5Y\xEBYs\xAC\x8B\xADX߳\xA1\xDB\xF8\xD9̷\xA9\xB1\xB99\x99:\xD9}r\xD6\xE4퓯\xDA\xE2\xB6.\xB6B\xDBj\xDB+v\xB8\x9D\xAB\x9D\xC8n\xBB\xDD5{\x8A\xBD\x87\xBDؾ\xC6\xFE\x96\x83\x8Aۡ\xC0\xE1\x80C\x8F\xA3\x8Ec\x84c\xA9\xE31ǧS,\xA6\xA4LY;\xA5}\xCA{\x96+~\xDD\xEE:i8\x859\x95:\xB58\xFD\xE1l\xEB\xCCs\xAEv\xBE9\x95>5x꒩MS\x9FM\xB3\x9B&\x98\xB6c\xDAmM\x97.\xCB]\xDA\\xFEtus\x95\xBA6\xB8\xF6\xBBY\xB8\xA5\xB9ms\xBB\xE5\xAE\xE5\xED\xBE\xD2\xFD\xBC\xC5c\xBA\xC7\x8FV\x8F7\x9E\xAE\x9E\xF9\x9E\x87=\xF7r\xF0\xCA\xF2\xDA\xEF\xD5\xE7m\xED-\xF0\xDE\xE3\xFD\xD0\xC7̇\xEB\xB3˧ۗ\xE9\x9B\xE6\xFB\x95o\xB7\x9F\xA9ׯ\xC6\xEFgs\xBE\xAD\xFF#\xF6dv&\xBB\x9E\xFDt:k\xBAt\xFA\xD1\xE9\xAF<\x9C
+$C+/i%m+zl\x9C| x0\xC4%daȩPJhx\xE8\xDA\xD0[#\x8FS\xC7s[v6\%<.|k\xF8\xCF\xB6҈\x96\xF8\x8C\xB0\xEBg܋\xB4\x8CG\x8BQ\x9C\xA8\xF5Q\x{1E3B63}\xE7GC\x8D\x89\x8E\xA9\x8E\xF95\xD6)\xB6$\xB6=N3nn\xDC\xFE\xB8\x97\xF1\xD3\xE3W\xC7\xDFM\xB0I\x90%\xB4%\xAA&\xA6&\xD6%\xBEJ
+LZ\x97\xD4=s\xCA\xCCE3/%$\x8B\x92\x9BRh)\x89)\xB5)C\xB3\x82fm\x9C՛\xEA\x92Z\x9E\xDA5\xDBzv\xE1\xECs\xE6d\xCF9>Wu.w\xEE\x914JZR\xDA\xFE\xB4w\xDC(n+whg޶y\x83\xBC\xDE&\xDE\xBE?\xBF_\xE0#X'x\x94.\xBD/\xC3'c}F\xBF\xD0OX%\x88\xB6\x8A\x9Ee\x86f\xEE\xCC|\x95\x95\xB57\xEBCvR\xF6\xC1\x85\x9C\xB4\x9Cf\xB1\x868K|6\xD78\xB70\xF7\x9A\xC4NR.\xE9\x9E\xEF9\xE3\xFCAi\xB8\xB46˛\x9Dה\xAF\xFF\xC1\xEC\x90\xD9\xC8>\x97\xF5\xF8T\xBC^\x90\xB8\xE0H\xA1z\xA1\xB8\xB0\xA3ȶhEѣ\xE2\xE0\xE2\xAF\x92y\xDBJLK\x96\x95\xF4,b/ڵ[<oq\xDB\xF3%eKz\x97\x86,ݷLiYֲKY\xA5\xEBJ_|\x96\xF4YK\x99Q\xD9Ҳ\x87\x9F\x87|~\xA0\x9CQ.-\xBF\xB5\xDCk\xF9\xCE/\xC8/D_\^1uŖ\xEF+\xF8+Y\x95U\x95\xEFV\xF2V^\xFC\xD2\xE9\xCB\xCD_~X\x95\xBE\xEA\xF2j\xD7\xD5;\xD6P׈\xD7t\xAD\xF5[\xBBo\x9D\xFA\xBA\xE2u\xD7\xCFX߸\x81\xB9\xA1bË\x8Ds7^\xA8\x9AV\xB5s\x93\xD2&٦\xEE\xCD\x9B\x9B\xB6XlY\xB3\xE5\xDDV\xE1\xD6\xCE\xEA\xE9\xD5\xB7n[\xB1\xED\xD5v\xFE\xF6\xEB;\xFCw4\xEC4\xDAY\xB9\xF3\xEDW\xA2\xAFn\xEF
+\xD9\xD5XcUS\xB5\x9B\xBA\xBB`\xF7\xAF{\xF7\xB4\xED\xFEu]\xADAme\xED\x9F{\xC5{\xBB\xF7\xC5\xEE;[\xE7VW\xB7\xDFp\xFF\xEA\xF8ف\xFE\xFA\xD4\xFA\xAB\xDF~\xD3\xD4\xE0а\xEB\xA0\xCE\xC1\xCAC\xE0\x90\xEC\xD0\xE3oӾ\xED:~\xB8\xED\x88\xFB\x91\x86\xEF,\xBF\xDBvT\xF3hE#\xD6X\xD48xLx\xAC\xBB)\xB9\xE9ZsXs[\x8BW\xCB\xD1\xEF\xBF\xDF\xDBj\xDAZ}\\xFB\xF8\xEAJ'\xCAN|8Y|r\xE8\x94\xE4\xD4\xC0\xE9\x8C\xD3\xDB\xE6\xB6\xDD=3\xF3\xCCͳ1g/\x9F?w\xFE\x87\xE0δ\xB3\xDBO\x9E\xF79\xDFz\xC1\xF3B\xF3E\xF7\x8B\xC7.\xB9^j\xECp\xE98\xFA\xA3ˏG/\xBB^n\xBC\xE2v\xA5\xE9\xAA\xC7Ֆk\xDE\xD7N\\xF7\xBB~\xFAF\xE0\x8Dnrn^\xEA\x8C\xEC\xBC֕\xD0u\xFBV\xEA\xAD\xEE\xDB\xFC\xDB}w\xB2\xEF<\xFB\xA9\xE0\xA7\xE1\xBBK\xE1%\xBE\xE2\xBE\xDA\xFD\xAA\x86j\xFE5\xF9_\xBB]\xBB\x8F\xF7\xF6t\xFC\xF7\xF3݇\xBC\x87O~\xC9\xFB\xE5]oٯ\xF4_\xAB\x99<\xAA\xEBs\xEEk\xED\xEE\xBF\xFAx\xD6\xE3\xDE'\x92'\xC3忩\xFF\xB6\xED\xA9\xCD\xD3\xEF~\xF7\xFF\xBDcp\xE6`\xEF3\xE9\xB3\xAC|\xAE\xFF|\xEF\x8Bi/چ\xA2\x87\xBC\xCCy9\xFC\xAA\xE2\
 xB5\xFE\xEB}o\xDCߴ\xBFMz\xFBhx\xC1;ڻ\xCDN\xFE\xB3\xE5}\xF8\xFB{r>|\xF87-]\xF0
+endstream
+endobj
+15 0 obj
+3367
+endobj
+8 0 obj
+[ /ICCBased 14 0 R ]
+endobj
+3 0 obj
+<< /Type /Pages /MediaBox [0 0 612 792] /Count 1 /Kids [ 2 0 R ] >>
+endobj
+16 0 obj
+<< /Type /Catalog /Pages 3 0 R >>
+endobj
+9 0 obj
+<< /Type /Font /Subtype /TrueType /BaseFont /WWJVDN+Helvetica /FontDescriptor
+17 0 R /Encoding /MacRomanEncoding /FirstChar 32 /LastChar 119 /Widths [ 278
+0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 667
+0 0 722 0 0 0 0 0 0 0 0 0 722 0 611 0 0 944 0 0 0 0 0 0 0 0 0 0 0 0 0 556
+0 0 556 0 0 0 0 0 556 556 0 0 333 0 278 0 0 722 ] >>
+endobj
+17 0 obj
+<< /Type /FontDescriptor /FontName /WWJVDN+Helvetica /Flags 32 /FontBBox [-951 -481 1445 1122]
+/ItalicAngle 0 /Ascent 770 /Descent -230 /CapHeight 717 /StemV 98 /XHeight
+523 /StemH 85 /AvgWidth 441 /MaxWidth 1500 /FontFile2 18 0 R >>
+endobj
+18 0 obj
+<< /Length 19 0 R /Length1 8228 /Filter /FlateDecode >>
+stream
+x\xBDY{XT׵_{\x9F\xE7<ff\x86\x99\xC903\x8C\xC3C$\xA2\x95#\xCE*\xA3\x8C(
+F$H\xD5VKr}T4\xE6a4\x89榵i\x8CJ-#pͨ\xD7\\xEBŪ}%\xB6\x89y4\xF7kӘ\xBE\xBEpso\xAF\xE9m#\xCC\xDCu\xCE n\x9A\xCF?\xF2\xF5\x9CY{\xAF\xB5\xD7~\xAC\xFD\xDB\xEB\xECuΞΎ\x8D-\x90\xDD\xC0@\x{DCA6}\xF6ՠ\v\x80\xA4\xAF\\xDF\xD4\x97\x8Da~eeW\xA7#.sY̺\xD5\xEDk\xD6\xC7e\xF1i\xB5mͺ\xCDc\xED\x93\xDE@\xF9\xF5֖\xA6Uq=\x8C`^؊q\x99܋yf\xEB\xFA\xCEMq\xD98\x88\xF9\xCCu\xAD\xD3'\xC9r\xC6\xFA\xA6Mc\xE3\xC3{(;\xBEҴ\xBE%^?\xE3\xE6\x99\xED=\xDC9&s\xA9\xBD\xA3e\xAC>\xA9G\xFB^\x82\xA5:x
+T\xF0 @A\x8Fw\x80\xF0{\xB5+X\xD4\xCAz\xBCޜ\x93\x96\xF0@b\xC9'`\xC0i\xE3\xF5@\xF5\xE3J\xFE\xE6\xCD\xFE\xA5eīyR\xFC+\xA8nחs\xDE\xF5h	\xEA\x875O\x8Ek\x94v\x98\xE8"P\xE7\x8F\xC0<\xA4R\xA4\xE9H~\xFF3t\x93\xA3\xF0ҷ\x91h#{`3\xD2n\xA4\xE7\x90\xD8q\xEE8JgȞ~V\x94Β\xCD`%\xF3%+k_\x9Cl\xB1\x9B\xD5\xFB\xCF#\x84|\xC1\xFE\x8E\xF9\x83sĂ\xAB\xF7>\xB1\xF4'\x80j\x8E\x9A|\x9B|V\x81\x9D\xBCn\xB2*!\x8B\xF0\xAD\xB37\xA2\xEA8\xB4#u#1JJ\xC8\xF1\xFE\x8Ci\xF6WI6\xB8Y\x82m<\x90\xC1\x92\xD3\xF6\xDF\xE5\xE7\xD8?̏P\xD2o\xBF荰\x98\xFD %)\xD1~\xC1\xF6\x82\xFD\xDFlk\xEC\xAF"\xF5\xC6U'|X\xE3\xB4\xFD\xB8m\x9D}F\x84\xEA\xB7?e\x8Bl\xF3d<\xDBhæ\xA7\xED\xEB}\xED\xAB\xF2}\xD5\xC1\xED\xED\xB7\xA1~\x89\xA4\xB1\xCEtڧ\xDBn\xD8\xF3\xBC\x91\xA0\x9Cc\xAB\xB2O\xC9\xFF\xA9=b5v\xEA\x96\xF6t\xDB~\xFB,Te؂\xDEYH\xE7\xC8	r\xA6\x90\xC3\xFD\xEE\xF9\xF6\xB3\xC8\xE2t\xE6\xF9f\x8C\x90\xAF+Tf\xE5\xBB#d\x8BTX\x99u\xD0W\xE9u\xFB\xAA\xECn_\xB9׋\xFC\x92+\xC2v\xE1\xCB\xC2a\x9A
 \xE0\xB2\x8F\xE0҄d\xD1(\xEAE\x9D\xA8բ(
+\xF2\xBD\xFER;\x8E\xF4B)\xC2\xD2; \xF2"!\xDF\xC7B\xF69\xA9\x9E|EdE*\x82\x98\x89\xFD\x9D\x95@r\x84\xF4\xEAe\x99Ӽ\xC2\xF1rr ^tR\xB2\xB32\xC7*
+=\x95yL0JD
+\xF3!L\x8B\xF0\xB0#\xA5\xAB\xD4\j\x9Cm(*\xFC\xBD\xA4Q\xD1\xDCN\xFD\xFF2[\xF8\xE0\x82\xBA\xFA\xF0	[(<Mfb\xB6\xD0\xED\xEA\xE6\xDB\xCC\xDF\xCD;7\xA2\xAA\xA5\xCC\xEF_\xB0h\xF3@W\xFB\xDA\xD5\xC1W\xB0\xD1lAj\xEF\xE9j5\x87\xBB\x9B\x8ESk\xDBe\x85#\xCCx\x9BW\xB6\xCAySK\xB8\xDD\xD5\xAFu\xA7\xBA\x94v\x93ԫeu\x97+p
+VןZ-\xB5\x{2EE4BA0}\xAB)h.\xEBh\x980\xD6\xEE\xF1\xB1:\xCA>c\xAC2\xB9\xB3y\xACf\xA5ݤ\xB1du\xB3<V\x83<V\x83<V\xB3Ԭ\x8C%O>\xD8VW\xF6p'z\xA7#ض\xC0Ϊ\xCF[\xB8\xAC>\xECh
+"\xE4(6w\xF4\xDCy\xC8\xE2\xBA\xC1\xCA\xE6\x81 \xF6һr\xBD?\xF6[\xEE2\xE8\xA3\xEBc\xFF\xCD㢞\x91\x89FKK\xE0<\x87\xA1x8\x86|\xAC\x80g\xE1*Y\x8B\xCF\xF6r\x84\xEB$r\xA1\x9F\xFBT\xC1OH,v+V\xC3w\xB1~'\\x84p
+\xB4\xD8f=\x98P\xBB\x8F\xB8c[P\x96\x90o\x86\xED\xB1\xEF@&̄\x9Dp\x8A\xB0\xD7}0;@\xED"\xB8N@/\xB6\xFF1q\xD1SlR\xEC\xFB\xB1 \xC2B\xECs;j\xAEŪb}`\x84l(\x83Z,\xDD\xAF7\xF3n\xAC\xCCP\x8C\xD6=߂#\xF0\xF8\x88<Jc\xAD\xB1\xAE\xD8\xEB\xB1\xF7\xD1U͐uxo%\x83\xE4}\xA6\x8F\xDD{>\xF6\xC7X\x91Ȃ)8j#\xEC\x87\xB1\xFF>\xBC/\xE0\xD6$\x92N\xB2\x9F\xA0}\x94\xB2;\xB8\xD4\xE8(\xE2\xE0\x83
+\xBC+\xE1!\xF8&"p\x86\xE0O\xF0W\xF2153z\xA6\x93\xB9\x9B\xFB\xD0\xC0\x9C\xA5<\x93\xE8\xC2{\xDE\xFBpN\xE7O\xA6\x92\xB9\xA4\x96l%O\x93\xE4t
+\xBD\x9F\xD6ӯ\xD2M\xF4\xB7L+\xB3\x9C\xD9\xCC\xFC\x82}\x98\xED\xE7\xF6r\xCF\xF2\x9A\xE8'\xB1s\xB1˱7!l\xF0e\xE8\x80m8\xBB\x8B\xF0:܄O	\x83}\xA57)&ed\xDE\xDD\xE40=C\x8E\x903\xB4\x96\ \xAF\xD3\xE4W\xE4\xF21\xB9E9\xAA\xA5&꧝t?\xED\xA5\xE9Ϙ6\xE6\xF3\xF3+\xE6v6G\xB9#܇\xBC[\xF8e\xB49\xBA;\xFA\xB3Xq\xEC\xFD\xD8_p\x8B\xC1\x89+S5\xF04\xE1l\xDB\xE1^\xF8\xCE\xE2$\xDE}\xB8jCp	\xAE*\xF7$\x86\xE1/\x88#\xB1\x92i\xA4\xEFrYM\xDA\xC8\xE4,ޯ*\xB6\xFC\x99\xE2BP5\xD0T\x9AN\xEBh3]O\xBB雴\x9BIc\xA60\xF3\x99eL\xDEW\x98\xEB\xCC-\xE6˱I\xAC\x89\xAD`\xE7\xC1^v={\xEF\xA3\xEC1\xB6\x9F}\x8D+\xE2fs5\xDC\xAE\x9B\xDB\xCD\xEDeVr׸\xEB\xFC6~\xDF\xCF\xCC\xFFn\x8BU\xC2C\xC2^\\x9D\xAB\xE8\xB3?@_\xFE\xDBŒL\xB4~|V\x92i\x86\x83\xB8GH\xF4\xA0w\xAD"\xDFD\xBC\xDA!+\xD6\xC0lc*\xE8T\xF4\x86W\xE1k譇`+\xECf\x96Ñ\xD8\xDB\xCC	x=ev\xD9+/\xB3e`\xE3\x9E\xC1\xD5y\xA6\xA2\x8Dݒo\x8A/\xCB\xEBqg\xBA\xEEq:p\xCBOO\xB3Z̩)\xA6\xE4$\xA3A\x9F\xA0ըU\xA2\xC0s,C	d]华\xB0\xA71\xCCz\\x
 9
 5\x959\xB2\xECj‚\xA6;
+\xF1Qv\x84\xCB'\xD6	;\xE4vM\xA8\x9APSš\xAB'Ք\xE25\xA5\xF1\x9AD\xEF(\x81\x92\x9ClG\xD0\xE5\xFF4\xE0rDȲ\x85\xF5\xC8?p\x85\xE1a\x85\xAFV\xF8'>y\xA78\x82\xE6ր#L\xC1pyWkO\xB01\x90\x93M\xCEH\x87:'[\xDE8$\xD0\xC8\x87an\xD3V\xDC`a\xAE\#\xB6\xBA\xC1\xB0Ņ<\xEAw\xB0iU\xB8va}0\x90\xE6t\x86\xB0\x8B\xD5\xE39\xD9ma\xB4\xF6hW\xB9V\xED\x89H\xD0\xDC(sM\xCB\xEB\xC3LS(L\xE5\xBE\xFEp\xAA+N\xDD\xF2\xA1\xF9o\xE2m.\xB8\xF7e\x98\xBA˛Zz\xCA\xC3R\xE3We\xA9i/J\xEA\xD8-\xDD\xAA\x93cF\xC86\xAEEKes\xE31\xC1ݸ\xD6V\xB9\xCA\\xAD=k\XT\xDFo\x95\xAC\xCA\xE6\x86\xDA\xFA~\x8BdQ\x84\x9C\xEC3\xE6m\xC5N\x9C\xFD\x99\x9C99s\xE4\xBC\xD8i\xDE\xCF\xF7O\xF1\xF2\x9F_\x90s\xF3\xB6\xA1_c\xBE`\xD18DF\xC05\xED;V*\x83\xB8\xD0ؙr\xD22zV\xCED\x9C\xF0
+\x9Cf\xDA37L\xD1gw\x98s\xCFk
+w\xD7\xDD6\xA357\xAEqm\xA0_e\xB1*A\xA8,\x84\xF5{\xF4\xB3p\xA5\xB0\xBE\xDE\xE5\xE8\xF9\xA3u\xA3k\xF8\xA3\x89%Mc%\xBC[\xFF	\xC8Jy\xA1\xC7}%L\x9An\xF3]r\xB0t\xE3\xAC[ͮVy}\xBB\x945E\xD9e\xDEQ\x80\xB2\x8Dls8xm\xBD3\xECa\xBEMf/\x88\x80\xAA\xB6\xFE!\xFBB\xDB\x81\x80\xED\xBE\xA32\xAC@u\xB6\xECjm\x85\x9Cl,\x98\xE2D.7\xDBQ\x8E#\x97˾\xE2\xE8q\xF4\xCC[\xD5\xE3(w\xB4\xA23\xB1n%GEKO(\xAC\xABG\x9C`1\x8E(\x85\xD2\xC6ٖPh\xF6\x93'\xF7\x83M\xB0zO{X;\xD6\xE6JQ\xDE(V\x9A\x9A\x8D\xC1\x94\xF1\xD4\xD6/\xACw\xD2\xC2R \x84\xAB\x80\xEE{\xA1\xB6>|=7\xC2Z\xF9㖢\xC5[\xDB\xCCc6OC\x9B󧠾 \xDE\xBE\xBBtc\xA1\x9E\xB9Ϻz\x973|\xA1\xA7'\xADG~\xDE\xE2r\x84\xC0\xE4i\xAC r\xF2\xE9\xAEŶ\x98\xB9\x9Ci\xCA8]N4+$cz/\xBA\xF4m\x8F\xC2w\xF6\xCFG\xB8p\xDCnl9\xAD-T\x9E\xF9!\t7Ϻ+\x84\x8B\xC7-\x9D\x80p	\xDA\,#\xFC\xA5³' \\xFA\xF9K\xE3v\xA3\x91s\xD0ZIA\xB8\xECBx\xEE\xDD \xB8+\x84\x83\xE3\x96N@\xB8m\xCAW\xFC\xE3\xAE\x9C\x80\xF0\xBC\xCFGx\xFE\xB8\xDDh\xE4\xB4v\xBE\x82p\xD5\x8
 4p\xF5\xDD \sW\xDF7n\xE9\x84k\xD1\xE6\xFBd\x84\xFE\xE3^4\xE1\xBA\xCFGx\xF1\xB8\xDDh\xE4\xFDh\xEDb\xE1%_\xC2K\xEF\xE1\xFA\xBBB84n\xE9\x84\x97\xA1\xCD!\xE1/\x8F#,\xA5\x85\xE1\xCE}\xB8{Ҷ_\xF8Ƽ\xFC\xC8\xF1M\x893B-\xC2|	\xF4\xE1w\xD7\xA4A\xF6p
+\x8F\xE1I\xC6\xC3P\x89\xB4}\x8C\x8A\xE9	؍uS\xB1\x8E\x9B\xDE>\xF3\xD1\xE2\x97\xC8Y\x94P/\x82AU\xFAa>\xA37\xFC\xF6N)\xE7?C{\xBBHP\x98\xF8!T\xBCLj\x85\xD1`\xAAU\xB8%-\x84B\xD8\x{6412C945}0\xB5\xCC\xF7\xD8Lv-{\x96kE=\xC5\xEF`_\xC7\xEFUϽ\xE6\xC6Ϣļ\xB0H\xA2>\xF0:\x92,#ϼ\x87<\xE6\xE6\xE6\xAA\xF7ْ%\xFE\xB3\xD8\x87\xF9\xD4\xFC\x83\xD3\xE0E*c\xF7EF~Ý\xFFtn\x84\xAD\xBE\x85gX\xA3\xC7Ʊ4ha\x8D\x94)d\xB0\xAC\x86\xC9\xC0\xE3+\x95\x98\xA1ֈZ\xAA\xD5R\xE0\xDBh\xB1ʪcD7Xt\xA2p؍G57\xABGKj\xF4\xAE\xBEy\xC3`,ʃ\xD2ҒђҒa\xE4G\xF3\xA7&9MN\xC3\x91>6od?\xE3y\x93\xF9\xFA\xAD\x8B\xD4Ν\x8C\x96\x9D\x88\xEA\xFAph\xBC~\xB5\x97\xA7\xD8Q*9EUC)K\xA8ZY\xC1\xCDs\xD6\xA2vk\xC0\xA2\xD5&|\xDB\xD9ՎC\xEBkn\x96\xC4\x973(\xC5a\x8B\xF2ptV\x9En\x81\xC1\x85\xA9\xEB\xC8U:r\xF5\xEA({\x95;?z\x84>\xF0\xE9\\xDA7\xBAP\x997\xFBp\x9Bp<x\xE1i\xC9($\xCC#\x95\\x88\xD4smܪ\xE4M\x9C\x98r?V-\x90Fҥ2\x97\xD3\xE1i4n0nLf\x8C\xF6\xE4t\xE3\xCCHIf=\xC6Lw\xA8TiB\
 x86\x86z\xD2\xD3D\x87\xDBdw\xA70\xF9\x89miV\x9F\xE8q{Ֆ,\xDFu\xE7\x81\xD5
+Tc\xE6V\xDF~o\xB4\xB8\xA4t\x81B\x9B\x8B\xA9E,\xC2_\xE6\xFE\xFC\xA9\xA4\x81L+\x9C~\xAF\xD7\xE3r\xE74\xF9\xFB\x892\x88\x9D\xA4\xA4\xA6\xA4\x9A\\xB9$\x8Fx\xA5\x8B\xA9\xD8\xFBbǗVG\xAD\x97\xE9\xB1c\xEB_[߼d)'0c\xEEM\xB5\x96\xD5
+\xAB\x8A\xB6D\x8B/3\xE9\xEDO\xFDsQFTM\x8F\xE4\xAF\xDD~\xAC\xC0\xD5\xD1}i\xB1\xAF<ٙT\xB2\xE4\x93'\xF2\xD3F{p+\x9C\xE8\x88\xFAϽ\x92\x95\xF0 PVT\xA5\xA6Z\xE1e\xDC{\x8B\xB7\x88{W\x98\xFD5\xFA\x9B\xD57\xD1\xEE\x9B5\xC1\x96\xC0o\xE5U\xC7%@\x9Bq\xB9\xF5\xE9\xECը\xE1GQw\xBE\xEF\xD3?q:t0y}\xDDxr\xBB\xFB\xD6\xE2\xC1\xE1QE6	\x9BU\x9B4\xBB\xC8N\x96\xAB h\x80\xA9d\xAB\xC52\xF5nq\x97\xFA
+\xBD\xCC\\xAEh\xB4\xF5\x9A5B\xABf7\xDD\xC9\xECvk\x9E\xA3\x99\xC2!\xCDqz\x94yI8\xA1I\xC4\xD3>\xB5\xA8\xB1\x88)\xEA\xA5\xAFY5\x9D\x9D\xCC\xE2\xDC</\x80[\xABըX\xC2h(\xC3\xF1Z\xA8\xA8\xD60\x82\xA8\xC3\xC9\xBFS\x{1A66AA}nvk\x80\xEC\xD4Z\xF6\xE1\xB4,8/s\xF5hQ\x91i,\xB3(S4Cij	\xFE\x8C\xB8N\xBB\xAAs\x87w\xE5\xE3\xA9ڠ
+\xBFe\xD5x\xF2$%	\xA1,ǰ\xBC\xA0UjQ.SY\x96\xC1b\xD0jvmՋ\x97v\xE5\x9A9\xBF\xB8Ui\x97\x88t[X\xB0p\xF3\xC1\xA7+[\x9C\xC6\xEEX\xECD\xE9P\xA5\xE3\xFD\xE1\x9EG\xB1QA!=\xB7e\xD4,\x99w\xC9\xCCVqQ\xEFhh\xD8+I*R\x80?\xE2R%&R\xF56\xA9"\xA6w\xA3ۮEOF{\xAFE\xBB\xB9\xF3\xB7\xEEg{e\xFAt.{\xF1\xD6l\+*c\xEF\xB2V<eH\xC7)7\xD1J\x9B\x9F\x9F\xB3\xBElg8M\xE4\x92M:c\xA2)Y\xD2Jɢ\xCFJhN3\x97\xC9\x99\xCBio\x8B郞\xDB\xDFv\xFD>\xF5\xF7.\xCDe\xC3e#].r\xCE\xCC\xC4C)\xB6\xCC"^R\x9C\xB6tAmKѸ\x85g\xD2_N%\xFD\xADt֝\x92\xE8N\xE7,j\xAD`\xD0ym^\xCE\xEA\xCD\xCC\xBC\x8B\xC7\xFB\x86\xF3h\xC3\xD8vrC\xDEN\x86\xDF\x95\x9F\x85\xF8#\x91׀6\*o*\xE8s\xFAa,͟:w\xB3T.\x84\x8Fp\xC7\xF2v\x8FAo\xD4'\xE9\x93\xF5,\xAFuߓ\x96\xE9\xC1\xE8`\xF3\x90\x9B*U\xF0\x80Ƥ\xF3\x90\x9D\xCB\xEA\xC4"Ѭ\xF6@\x82<\xDA\xF7\xFB\x89\xBE\xB7$\xFF\xFF\x94GȆ\xD8\xD0\xD0\xF2\xB3\x96brf\x90\x82i3
+g\xE8\x88\xC0\xBC\xEB0\xE8\xA1@y\xFC\xEE\xE1B\xAF\xCF,4\xEAG>\xE6\x9Ex\xE6\xB1\xC5S\x93O	\xF7\xE5/\xDA<gѕ\xE8\x89\xF97Įɚ\xF2\xEB\xC78\xE2b+\xBC\xE1\xBA\xF9\xDFy\xF1RCaE񓹵\xE9z\)\x9EPR\xF5l,t\xA0\x87\xC8\x94ೲ\xFF\xFF\xE6.B
+\xD4Iو\xA6\x98*\xA4\x8A^֛\xB4Q\xD8(\x8AI	4\xC9`\xB0\xF1\x82I\xABN\xF0\xA9\xADfb\xF2A\x8A%Ռ\xFF,8\x9B\xCB&l7\xF2N\x83\xF0\x8A\x8A\x884\xE0\xFEX8\xA3\xB0@\xDES\xF0q\x95\xB7\x98{x\xE4\xB6JK\xFDC]Ι\x8C\xFC]\xED\xA7\xB9\x8B\xA3\xEF-t\xBDzat!}\xB1kF\xFD\xA1\xEB\xA3Wd\xFBh\xDC>\xF4Xa\x85\x94\xFF
+\x99\xA7,\x9F\xCC{\x93\xBB\xF8N\x81K\xD6\xD2d\xB3\xDE\xC6	\xC0\x9B5j\xAB`\xB5\x82֧\xB2\xA6\x93\\xB3\xCF\x96\xB4\xF4IfƗ|,~\xE0R\xFF\xCDT\x82ƚf#\xFCw؊k\xA0#h/\xD9\xDE[u\xA2\xF5Fm\xF6+\xB6\xA9\xDB$\xDF\xFC\x999i\x83\xE4e6\xEF\xD9\x8B\xBE\xB5\xF4;\xB2\xCD\xCD%\xABRʦoh}+\x8DE_/\x8E\xBD\xC3:\xD9\x8Ctf\xB4\xFD	\xA9\xE0Y\xF1\xA0\xFE\xB9\x94\x97\xD8c\xE2Q\xFD\xF1\x94\x88xE|\x8B\xFDP\xF7\x87d\xED,\x91\xB7\x99\xADͨ\xB1\x8B\x89z\xADi*\xAF\xC9bM\x8BՀ\xB3c\xCC[\x87g\x8D[\x8E\xAA\xB8e6\xA4\xB2M\x92
+=\xCB@=DHE\x8EK@N\x9D\xAC\xF5\xD1c"\xA6\xF0\xC2\xE80Q|ON\xFC\x8F@C\xA6Q\xD9\xF0q5\x92S
+\x8C\xE8e\xD4yLG_\xE8\xAFwL\xAD:\xFB\xD2\xC1\x83/\xE2\xA1\xF3H\xF4\xFF#:B\x8C\xBF\xE3;I\xE2у+\x9E\xE9\xEF\xBD\xC1\xBC\xFD(z3:\xFD>\xF1\x8F\x918\xF4\xA3ݸXO\xB1`\x80\xFB$\x8F\x97\xF1$\xCC`*XV'\xEA\xA9NePi\xBD\xA2\xBCD\xB5hM"\xB9z\x9F,Ƥ	\xA2m\xBB\xEDA\xB84\xF2\xFE^]:4:$?\x8Dr\x94\x8A\xFB\x90\xB2,\x8ArI\xDC}v\xF7\x9A\xBE\xFB g\xB6\xE9\xD3\xF4\xDF|j\x90\xCD;Sx\x982\xAF2\xB4\xAFc\xF4Y٧ScS\xB7\x91_\xF4/	\xB9\xEA:!\xA5\x92\x9BM)Jex\x9D\xDA`ŝOu}`ҙ;C\x99\x91\x8B\xC5:\xE2\\xB3ulgh(R6\x80x\xD0ɋG\x9Da\xFD\xE8+%\xE4\x98\\x86\xE4Ԕ\x82i\x853L:\xB4\xC93\xDD\xE0\x9A^p\xECto\xAFǔ\x9F\x90\x91l\x9F\xEBݶ\xEC\xC9'\xB9e\xD17\xF7\x8Fg&iݧYC/\xEDW\x9E9|\xBF䎰y\x9FҶ
+\xF6\x84
+դ\\x98\xA7\xD9\xC5\xF4\x88;\xD4?\xA2C\xCC\x85\xAB\xE2\xD5W5\x9A\xD5\xC2Z\xB1Eݦ\xE96\x8B]\xEA͚B\x8FF-ץ\xCCWa\xC7,\xCDJ\xC9\xF2?[L\x8A\xD9\xC7\xC9\xE3,g(\xE2\x95P\xA4E\x871+a$\xC2@t\xD1\xC4~<\xC5\xE3\xA6\xFF/5`\xE0\x90\xB4\x9Cψ;\xF8\x8C\xED\xB8]z?\xFE\xEE\x88K{\xA4$9.	<\xCB\xC9\xC7c\xD3I'\xC7&\x8D\x97Ei*\xC74l\xBBu\xC8\xCCa`R\x82\x94\xC2`\xDC/\x91\xDFI6l؀c-H\x93\x8D\xB7\xAF\xB7~v\xEDG?\xFF\xE5`\xF4\xEA\xB9wq.\xFAc|\xC9d\xAAF\xCE0\xB7\xAE1_\xF9w\xF7劵\xE0\xFF\x9Fu鰐\xC1\xFF!\xFC0f\xC0,\xFCwa\xFE\xB3!\xFF\xB0\x96)+\xBE\xFD\xC7\xDF\xF3y\xFC\x96.\x9D\xBF$P\xE3\xAFlY\xD7\xD5\xD2ٶ\xB2	\xEBĵre	\xA9
+i9\x92|N\xFDu\xA4\xBDH\xCF#}\xE9_\x91~\x82\xF4\xD2GH#\xD8X\xBBP\x86q\x9E`\x99('ɕ\x93\xE4E\x93\xE4œ䥓d\x8F;Ɠ\xDF\xFE\xEF\xFF+\x93\xE4\x87&\xC9\x93d\xE5\xFF\xF4;\xFA\xFB\xAA\xAC\xFF?_
+endstream
+endobj
+19 0 obj
+5044
+endobj
+20 0 obj
+(Untitled 5)
+endobj
+21 0 obj
+(Mac OS X 10.14 Quartz PDFContext)
+endobj
+22 0 obj
+(Andy Estes)
+endobj
+23 0 obj
+()
+endobj
+24 0 obj
+(TextEdit)
+endobj
+25 0 obj
+(D:20180415035659Z00'00')
+endobj
+26 0 obj
+()
+endobj
+27 0 obj
+[ () ]
+endobj
+1 0 obj
+<< /Title 20 0 R /Author 22 0 R /Subject 23 0 R /Producer 21 0 R /Creator
+24 0 R /CreationDate 25 0 R /ModDate 25 0 R /Keywords 26 0 R /AAPL:Keywords
+27 0 R >>
+endobj
+xref
+0 28
+0000000000 65535 f 
+0000013185 00000 n 
+0000000375 00000 n 
+0000007035 00000 n 
+0000000022 00000 n 
+0000000356 00000 n 
+0000000479 00000 n 
+0000003471 00000 n 
+0000006999 00000 n 
+0000007168 00000 n 
+0000000628 00000 n 
+0000000682 00000 n 
+0000000735 00000 n 
+0000003450 00000 n 
+0000003507 00000 n 
+0000006978 00000 n 
+0000007118 00000 n 
+0000007541 00000 n 
+0000007791 00000 n 
+0000012925 00000 n 
+0000012946 00000 n 
+0000012975 00000 n 
+0000013026 00000 n 
+0000013055 00000 n 
+0000013074 00000 n 
+0000013101 00000 n 
+0000013143 00000 n 
+0000013162 00000 n 
+trailer
+<< /Size 28 /Root 16 0 R /Info 1 0 R /ID [ <5c6c512202ed1ee67f49e8bf271ea011>
+<5c6c512202ed1ee67f49e8bf271ea011> ] >>
+startxref
+13360
+%%EOF

Modified: trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKPDFView.mm (230662 => 230663)


--- trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKPDFView.mm	2018-04-15 17:38:01 UTC (rev 230662)
+++ trunk/Tools/TestWebKitAPI/Tests/WebKitCocoa/WKPDFView.mm	2018-04-15 21:21:51 UTC (rev 230663)
@@ -28,13 +28,16 @@
 
 #if WK_API_ENABLED && TARGET_OS_IPHONE
 
+#import "PlatformUtilities.h"
 #import "TestNavigationDelegate.h"
+#import "Utilities.h"
 #import <WebKit/WKWebViewPrivate.h>
+#import <WebKit/_WKFindDelegate.h>
 #import <wtf/RetainPtr.h>
 
 static void runTest(NSURL *pdfURL)
 {
-    auto webView = adoptNS([[WKWebView alloc] initWithFrame:CGRectZero]);
+    auto webView = adoptNS([[WKWebView alloc] init]);
     [webView loadRequest:[NSURLRequest requestWithURL:pdfURL]];
     [webView _test_waitForDidFinishNavigation];
 
@@ -53,4 +56,264 @@
     runTest([[NSBundle mainBundle] URLForResource:@"encrypted" withExtension:@"pdf" subdirectory:@"TestWebKitAPI.resources"]);
 }
 
+static BOOL isDone;
+static const NSUInteger maxCount = 100;
+
+@interface TestFindDelegate : NSObject <_WKFindDelegate>
+@property (nonatomic, readonly) NSString *findString;
+@property (nonatomic, readonly) NSUInteger matchesCount;
+@property (nonatomic, readonly) NSInteger matchIndex;
+@property (nonatomic, readonly) BOOL didFail;
+@end
+
+@implementation TestFindDelegate {
+    RetainPtr<NSString> _findString;
+}
+
+- (NSString *)findString
+{
+    return _findString.get();
+}
+
+- (void)_webView:(WKWebView *)webView didCountMatches:(NSUInteger)matches forString:(NSString *)string
+{
+    _findString = string;
+    _matchesCount = matches;
+    _didFail = NO;
+    isDone = YES;
+}
+
+- (void)_webView:(WKWebView *)webView didFindMatches:(NSUInteger)matches forString:(NSString *)string withMatchIndex:(NSInteger)matchIndex
+{
+    _findString = string;
+    _matchesCount = matches;
+    _matchIndex = matchIndex;
+    _didFail = NO;
+    isDone = YES;
+}
+
+- (void)_webView:(WKWebView *)webView didFailToFindString:(NSString *)string
+{
+    _findString = string;
+    _didFail = YES;
+    isDone = YES;
+}
+
+@end
+
+static void loadWebView(WKWebView *webView, TestFindDelegate *findDelegate)
+{
+    [webView _setFindDelegate:findDelegate];
+    NSURL *pdfURL = [[NSBundle mainBundle] URLForResource:@"find" withExtension:@"pdf" subdirectory:@"TestWebKitAPI.resources"];
+    [webView loadRequest:[NSURLRequest requestWithURL:pdfURL]];
+    [webView _test_waitForDidFinishNavigation];
+}
+
+TEST(WKPDFView, CountString)
+{
+    auto webView = adoptNS([[WKWebView alloc] init]);
+    auto findDelegate = adoptNS([[TestFindDelegate alloc] init]);
+    loadWebView(webView.get(), findDelegate.get());
+
+    NSString *expectedString = @"Two";
+    [webView _countStringMatches:expectedString options:0 maxCount:maxCount];
+    TestWebKitAPI::Util::run(&isDone);
+
+    EXPECT_EQ(1U, [findDelegate matchesCount]);
+    EXPECT_FALSE([findDelegate didFail]);
+    EXPECT_WK_STREQ(expectedString, [findDelegate findString]);
+}
+
+TEST(WKPDFView, CountStringMissing)
+{
+    auto webView = adoptNS([[WKWebView alloc] init]);
+    auto findDelegate = adoptNS([[TestFindDelegate alloc] init]);
+    loadWebView(webView.get(), findDelegate.get());
+
+    NSString *expectedString = @"One";
+    [webView _countStringMatches:expectedString options:0 maxCount:maxCount];
+    TestWebKitAPI::Util::run(&isDone);
+
+    EXPECT_EQ(0U, [findDelegate matchesCount]);
+    EXPECT_FALSE([findDelegate didFail]);
+    EXPECT_WK_STREQ(expectedString, [findDelegate findString]);
+}
+
+TEST(WKPDFView, CountStringCaseInsensitive)
+{
+    auto webView = adoptNS([[WKWebView alloc] init]);
+    auto findDelegate = adoptNS([[TestFindDelegate alloc] init]);
+    loadWebView(webView.get(), findDelegate.get());
+
+    NSString *expectedString = @"t";
+    [webView _countStringMatches:expectedString options:_WKFindOptionsCaseInsensitive maxCount:maxCount];
+    TestWebKitAPI::Util::run(&isDone);
+
+    EXPECT_EQ(5U, [findDelegate matchesCount]);
+    EXPECT_FALSE([findDelegate didFail]);
+    EXPECT_WK_STREQ(expectedString, [findDelegate findString]);
+}
+
+TEST(WKPDFView, FindString)
+{
+    auto webView = adoptNS([[WKWebView alloc] init]);
+    auto findDelegate = adoptNS([[TestFindDelegate alloc] init]);
+    loadWebView(webView.get(), findDelegate.get());
+
+    NSString *expectedString = @"one";
+    [webView _findString:expectedString options:0 maxCount:maxCount];
+    TestWebKitAPI::Util::run(&isDone);
+
+    EXPECT_EQ(1U, [findDelegate matchesCount]);
+    EXPECT_EQ(0, [findDelegate matchIndex]);
+    EXPECT_FALSE([findDelegate didFail]);
+    EXPECT_WK_STREQ(expectedString, [findDelegate findString]);
+}
+
+TEST(WKPDFView, FindStringMissing)
+{
+    auto webView = adoptNS([[WKWebView alloc] init]);
+    auto findDelegate = adoptNS([[TestFindDelegate alloc] init]);
+    loadWebView(webView.get(), findDelegate.get());
+
+    NSString *expectedString = @"One";
+    [webView _findString:expectedString options:0 maxCount:maxCount];
+    TestWebKitAPI::Util::run(&isDone);
+
+    EXPECT_TRUE([findDelegate didFail]);
+    EXPECT_WK_STREQ(expectedString, [findDelegate findString]);
+}
+
+TEST(WKPDFView, FindStringCaseInsensitive)
+{
+    auto webView = adoptNS([[WKWebView alloc] init]);
+    auto findDelegate = adoptNS([[TestFindDelegate alloc] init]);
+    loadWebView(webView.get(), findDelegate.get());
+
+    NSString *expectedString = @"t";
+    [webView _findString:expectedString options:_WKFindOptionsCaseInsensitive maxCount:maxCount];
+    TestWebKitAPI::Util::run(&isDone);
+
+    EXPECT_EQ(5U, [findDelegate matchesCount]);
+    EXPECT_EQ(0, [findDelegate matchIndex]);
+    EXPECT_FALSE([findDelegate didFail]);
+    EXPECT_WK_STREQ(expectedString, [findDelegate findString]);
+
+    isDone = NO;
+    [webView _findString:expectedString options:_WKFindOptionsCaseInsensitive maxCount:maxCount];
+    TestWebKitAPI::Util::run(&isDone);
+
+    EXPECT_EQ(5U, [findDelegate matchesCount]);
+    EXPECT_EQ(1, [findDelegate matchIndex]);
+    EXPECT_FALSE([findDelegate didFail]);
+    EXPECT_WK_STREQ(expectedString, [findDelegate findString]);
+
+    isDone = NO;
+    [webView _findString:expectedString options:_WKFindOptionsCaseInsensitive | _WKFindOptionsBackwards maxCount:maxCount];
+    TestWebKitAPI::Util::run(&isDone);
+
+    EXPECT_EQ(5U, [findDelegate matchesCount]);
+    EXPECT_EQ(0, [findDelegate matchIndex]);
+    EXPECT_FALSE([findDelegate didFail]);
+    EXPECT_WK_STREQ(expectedString, [findDelegate findString]);
+}
+
+TEST(WKPDFView, FindStringBackward)
+{
+    auto webView = adoptNS([[WKWebView alloc] init]);
+    auto findDelegate = adoptNS([[TestFindDelegate alloc] init]);
+    loadWebView(webView.get(), findDelegate.get());
+
+    NSString *expectedString = @"t";
+    [webView _findString:expectedString options:_WKFindOptionsCaseInsensitive | _WKFindOptionsBackwards maxCount:maxCount];
+    TestWebKitAPI::Util::run(&isDone);
+
+    EXPECT_EQ(5U, [findDelegate matchesCount]);
+    EXPECT_EQ(4, [findDelegate matchIndex]);
+    EXPECT_FALSE([findDelegate didFail]);
+    EXPECT_WK_STREQ(expectedString, [findDelegate findString]);
+
+    isDone = NO;
+    [webView _findString:expectedString options:_WKFindOptionsCaseInsensitive | _WKFindOptionsBackwards maxCount:maxCount];
+    TestWebKitAPI::Util::run(&isDone);
+
+    EXPECT_EQ(5U, [findDelegate matchesCount]);
+    EXPECT_EQ(3, [findDelegate matchIndex]);
+    EXPECT_FALSE([findDelegate didFail]);
+    EXPECT_WK_STREQ(expectedString, [findDelegate findString]);
+
+    isDone = NO;
+    [webView _findString:expectedString options:_WKFindOptionsCaseInsensitive maxCount:maxCount];
+    TestWebKitAPI::Util::run(&isDone);
+
+    EXPECT_EQ(5U, [findDelegate matchesCount]);
+    EXPECT_EQ(4, [findDelegate matchIndex]);
+    EXPECT_FALSE([findDelegate didFail]);
+    EXPECT_WK_STREQ(expectedString, [findDelegate findString]);
+}
+
+TEST(WKPDFView, FindStringPastEnd)
+{
+    auto webView = adoptNS([[WKWebView alloc] init]);
+    auto findDelegate = adoptNS([[TestFindDelegate alloc] init]);
+    loadWebView(webView.get(), findDelegate.get());
+
+    NSString *expectedString = @"two";
+    [webView _findString:expectedString options:_WKFindOptionsCaseInsensitive maxCount:maxCount];
+    TestWebKitAPI::Util::run(&isDone);
+
+    EXPECT_EQ(2U, [findDelegate matchesCount]);
+    EXPECT_EQ(0, [findDelegate matchIndex]);
+    EXPECT_FALSE([findDelegate didFail]);
+    EXPECT_WK_STREQ(expectedString, [findDelegate findString]);
+
+    isDone = NO;
+    [webView _findString:expectedString options:_WKFindOptionsCaseInsensitive maxCount:maxCount];
+    TestWebKitAPI::Util::run(&isDone);
+
+    EXPECT_EQ(2U, [findDelegate matchesCount]);
+    EXPECT_EQ(1, [findDelegate matchIndex]);
+    EXPECT_FALSE([findDelegate didFail]);
+    EXPECT_WK_STREQ(expectedString, [findDelegate findString]);
+
+    isDone = NO;
+    [webView _findString:expectedString options:_WKFindOptionsCaseInsensitive maxCount:maxCount];
+    TestWebKitAPI::Util::run(&isDone);
+
+    EXPECT_TRUE([findDelegate didFail]);
+    EXPECT_WK_STREQ(expectedString, [findDelegate findString]);
+}
+
+TEST(WKPDFView, FindStringBackwardPastStart)
+{
+    auto webView = adoptNS([[WKWebView alloc] init]);
+    auto findDelegate = adoptNS([[TestFindDelegate alloc] init]);
+    loadWebView(webView.get(), findDelegate.get());
+
+    NSString *expectedString = @"two";
+    [webView _findString:expectedString options:_WKFindOptionsCaseInsensitive | _WKFindOptionsBackwards maxCount:maxCount];
+    TestWebKitAPI::Util::run(&isDone);
+
+    EXPECT_EQ(2U, [findDelegate matchesCount]);
+    EXPECT_EQ(1, [findDelegate matchIndex]);
+    EXPECT_FALSE([findDelegate didFail]);
+    EXPECT_WK_STREQ(expectedString, [findDelegate findString]);
+
+    isDone = NO;
+    [webView _findString:expectedString options:_WKFindOptionsCaseInsensitive | _WKFindOptionsBackwards maxCount:maxCount];
+    TestWebKitAPI::Util::run(&isDone);
+
+    EXPECT_EQ(2U, [findDelegate matchesCount]);
+    EXPECT_EQ(0, [findDelegate matchIndex]);
+    EXPECT_FALSE([findDelegate didFail]);
+    EXPECT_WK_STREQ(expectedString, [findDelegate findString]);
+
+    isDone = NO;
+    [webView _findString:expectedString options:_WKFindOptionsCaseInsensitive | _WKFindOptionsBackwards maxCount:maxCount];
+    TestWebKitAPI::Util::run(&isDone);
+
+    EXPECT_TRUE([findDelegate didFail]);
+    EXPECT_WK_STREQ(expectedString, [findDelegate findString]);
+}
+
 #endif
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to