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

Unified Diff: ios/web/test/web_int_test.mm

Issue 2599233002: Created test for window.location.assign. (Closed)
Patch Set: move shared code to WebIntTest Created 3 years, 11 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « ios/web/test/web_int_test.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ios/web/test/web_int_test.mm
diff --git a/ios/web/test/web_int_test.mm b/ios/web/test/web_int_test.mm
index 92edfc8e4d51e4d7e63562ef8f46d4ffecb20761..365d2b0de8be99a6b653b7cc77a56763ee21211b 100644
--- a/ios/web/test/web_int_test.mm
+++ b/ios/web/test/web_int_test.mm
@@ -5,25 +5,73 @@
#import "ios/web/test/web_int_test.h"
#import "base/ios/block_types.h"
-
+#include "base/memory/ptr_util.h"
#import "base/test/ios/wait_util.h"
#import "ios/web/public/test/http_server.h"
+#import "ios/web/public/test/js_test_util.h"
+#include "ios/web/public/web_state/web_state_observer.h"
#import "ios/web/public/web_view_creation_util.h"
namespace web {
+#pragma mark - IntTestWebStateObserver
+
+// WebStateObserver class that is used to track when page loads finish.
+class IntTestWebStateObserver : public web::WebStateObserver {
+ public:
+ IntTestWebStateObserver(web::WebState* web_state)
+ : web::WebStateObserver(web_state), page_loaded_(false) {}
+
+ // Instructs the observer to listen for page loads for |url|.
+ void ExpectPageLoad(const GURL& url) {
+ expected_url_ = url;
+ page_loaded_ = false;
+ }
+
+ // Whether |expected_url_| has been loaded successfully.
+ bool IsExpectedPageLoaded() { return page_loaded_; }
+
+ // WebStateObserver methods:
+ void PageLoaded(
+ web::PageLoadCompletionStatus load_completion_status) override {
+ ASSERT_EQ(load_completion_status == web::PageLoadCompletionStatus::SUCCESS,
+ expected_url_.is_valid());
+ page_loaded_ = true;
+ }
+
+ private:
+ GURL expected_url_;
+ bool page_loaded_;
+};
+
+#pragma mark - WebIntTest
+
WebIntTest::WebIntTest() {}
WebIntTest::~WebIntTest() {}
void WebIntTest::SetUp() {
WebTest::SetUp();
+ // Start the http server.
web::test::HttpServer& server = web::test::HttpServer::GetSharedInstance();
ASSERT_FALSE(server.IsRunning());
server.StartOrDie();
+ // Remove any previously existing WKWebView data.
RemoveWKWebViewCreatedData([WKWebsiteDataStore defaultDataStore],
[WKWebsiteDataStore allWebsiteDataTypes]);
+
+ // Create the WebState and its WebStateObserver.
+ web::WebState::CreateParams web_state_create_params(GetBrowserState());
+ web_state_ = web::WebState::Create(web_state_create_params);
+ observer_ = base::WrapUnique(new IntTestWebStateObserver(web_state()));
+
+ // Resize the webview so that pages can be properly rendered.
+ web_state()->GetView().frame =
+ [UIApplication sharedApplication].keyWindow.bounds;
+
+ // Enable web usage for the WebState.
+ web_state()->SetWebUsageEnabled(true);
}
void WebIntTest::TearDown() {
@@ -37,6 +85,27 @@
WebTest::TearDown();
}
+id WebIntTest::ExecuteJavaScript(NSString* script) {
+ return web::ExecuteJavaScript(web_state()->GetJSInjectionReceiver(), script);
+}
+
+void WebIntTest::ExecuteBlockAndWaitForLoad(const GURL& url,
+ ProceduralBlock block) {
+ DCHECK(block);
+ observer_->ExpectPageLoad(url);
+ block();
+ base::test::ios::WaitUntilCondition(^bool {
+ return observer_->IsExpectedPageLoaded();
+ });
+}
+
+void WebIntTest::LoadUrl(const GURL& url) {
+ ExecuteBlockAndWaitForLoad(url, ^{
+ web::NavigationManager::WebLoadParams params(url);
+ navigation_manager()->LoadURLWithParams(params);
+ });
+}
+
void WebIntTest::RemoveWKWebViewCreatedData(WKWebsiteDataStore* data_store,
NSSet* websiteDataTypes) {
__block bool data_removed = false;
@@ -71,4 +140,13 @@
});
}
+NSInteger WebIntTest::GetIndexOfNavigationItem(
+ const web::NavigationItem* item) {
+ for (NSInteger i = 0; i < navigation_manager()->GetItemCount(); ++i) {
+ if (navigation_manager()->GetItemAtIndex(i) == item)
+ return i;
+ }
+ return NSNotFound;
+}
+
} // namespace web
« no previous file with comments | « ios/web/test/web_int_test.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698