Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(351)

Side by Side Diff: ios/web/public/test/earl_grey/web_view_matchers.mm

Issue 2275843003: Add support for webViewContainingBlockedImage. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Conform to c style guide Created 4 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « ios/web/public/test/earl_grey/web_view_matchers.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #import "ios/web/public/test/earl_grey/web_view_matchers.h" 5 #import "ios/web/public/test/earl_grey/web_view_matchers.h"
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #import <WebKit/WebKit.h> 9 #import <WebKit/WebKit.h>
10 10
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after
95 [description appendText:base::SysUTF8ToNSString(text)]; 95 [description appendText:base::SysUTF8ToNSString(text)];
96 }; 96 };
97 97
98 return grey_allOf(webViewInWebState(web_state), 98 return grey_allOf(webViewInWebState(web_state),
99 [[[GREYElementMatcherBlock alloc] 99 [[[GREYElementMatcherBlock alloc]
100 initWithMatchesBlock:matches 100 initWithMatchesBlock:matches
101 descriptionBlock:describe] autorelease], 101 descriptionBlock:describe] autorelease],
102 nil); 102 nil);
103 } 103 }
104 104
105 id<GREYMatcher> webViewContainingBlockedImage(std::string image_id,
106 CGSize expected_size,
107 WebState* web_state) {
108 MatchesBlock matches = ^BOOL(WKWebView*) {
109 __block BOOL did_succeed = NO;
110 NSDate* deadline =
111 [NSDate dateWithTimeIntervalSinceNow:testing::kWaitForUIElementTimeout];
112 while (([[NSDate date] compare:deadline] != NSOrderedDescending) &&
113 !did_succeed) {
114 NSString* const kGetElementAttributesScript = [NSString
115 stringWithFormat:@"var image = document.getElementById('%@');"
116 @"var imageHeight = image.height;"
117 @"var imageWidth = image.width;"
118 @"JSON.stringify({"
119 @" height:imageHeight,"
120 @" width:imageWidth"
121 @"});",
122 base::SysUTF8ToNSString(image_id)];
123 std::unique_ptr<base::Value> value = ExecuteScript(
124 web_state, base::SysNSStringToUTF8(kGetElementAttributesScript));
125 std::string result;
126 if (value && value->GetAsString(&result)) {
127 NSString* evaluation_result = base::SysUTF8ToNSString(result);
128 NSData* image_attributes_as_data =
129 [evaluation_result dataUsingEncoding:NSUTF8StringEncoding];
130 NSDictionary* image_attributes =
131 [NSJSONSerialization JSONObjectWithData:image_attributes_as_data
132 options:0
133 error:nil];
134 CGFloat height = [image_attributes[@"height"] floatValue];
135 CGFloat width = [image_attributes[@"width"] floatValue];
136 did_succeed =
137 (height < expected_size.height && width < expected_size.width);
138 }
139 base::test::ios::SpinRunLoopWithMaxDelay(
140 base::TimeDelta::FromSecondsD(testing::kSpinDelaySeconds));
141 }
142 return did_succeed;
143 };
144
145 DescribeToBlock describe = ^(id<GREYDescription> description) {
146 [description appendText:@"web view blocking resource with id "];
147 [description appendText:base::SysUTF8ToNSString(image_id)];
148 };
149
150 return grey_allOf(webViewInWebState(web_state),
151 [[[GREYElementMatcherBlock alloc]
152 initWithMatchesBlock:matches
153 descriptionBlock:describe] autorelease],
154 nil);
155 }
156
105 id<GREYMatcher> webViewCssSelector(std::string selector, WebState* web_state) { 157 id<GREYMatcher> webViewCssSelector(std::string selector, WebState* web_state) {
106 MatchesBlock matches = ^BOOL(WKWebView*) { 158 MatchesBlock matches = ^BOOL(WKWebView*) {
107 std::string script = base::StringPrintf(kTestCssSelectorJavaScriptTemplate, 159 std::string script = base::StringPrintf(kTestCssSelectorJavaScriptTemplate,
108 selector.c_str()); 160 selector.c_str());
109 __block bool did_succeed = false; 161 __block bool did_succeed = false;
110 NSDate* deadline = 162 NSDate* deadline =
111 [NSDate dateWithTimeIntervalSinceNow:testing::kWaitForUIElementTimeout]; 163 [NSDate dateWithTimeIntervalSinceNow:testing::kWaitForUIElementTimeout];
112 while (([[NSDate date] compare:deadline] != NSOrderedDescending) && 164 while (([[NSDate date] compare:deadline] != NSOrderedDescending) &&
113 !did_succeed) { 165 !did_succeed) {
114 std::unique_ptr<base::Value> value = ExecuteScript(web_state, script); 166 std::unique_ptr<base::Value> value = ExecuteScript(web_state, script);
(...skipping 27 matching lines...) Expand all
142 DescribeToBlock describe = ^(id<GREYDescription> description) { 194 DescribeToBlock describe = ^(id<GREYDescription> description) {
143 [description appendText:@"web view scroll view"]; 195 [description appendText:@"web view scroll view"];
144 }; 196 };
145 197
146 return [[[GREYElementMatcherBlock alloc] initWithMatchesBlock:matches 198 return [[[GREYElementMatcherBlock alloc] initWithMatchesBlock:matches
147 descriptionBlock:describe] 199 descriptionBlock:describe]
148 autorelease]; 200 autorelease];
149 } 201 }
150 202
151 } // namespace web 203 } // namespace web
OLDNEW
« no previous file with comments | « ios/web/public/test/earl_grey/web_view_matchers.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698