|  | // Copyright 2015 The Chromium Authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | #ifndef IOS_WEB_TEST_WEB_INT_TEST_H_ | 
|  | #define IOS_WEB_TEST_WEB_INT_TEST_H_ | 
|  |  | 
|  | #import <WebKit/WebKit.h> | 
|  |  | 
|  | #include "base/compiler_specific.h" | 
|  | #import "base/ios/block_types.h" | 
|  | #include "base/macros.h" | 
|  | #import "ios/web/public/navigation_manager.h" | 
|  | #import "ios/web/public/test/fakes/test_web_state_delegate.h" | 
|  | #include "ios/web/public/test/web_test.h" | 
|  | #import "ios/web/public/web_state/web_state.h" | 
|  |  | 
|  | class GURL; | 
|  |  | 
|  | namespace web { | 
|  |  | 
|  | // A test fixture for integration tests that need to bring up the HttpServer. | 
|  | class WebIntTest : public WebTest { | 
|  | protected: | 
|  | WebIntTest(); | 
|  | ~WebIntTest() override; | 
|  |  | 
|  | // WebTest methods. | 
|  | void SetUp() override; | 
|  | void TearDown() override; | 
|  |  | 
|  | // The WebState and NavigationManager used by this test fixture. | 
|  | WebState* web_state() { return web_state_.get(); } | 
|  | NavigationManager* navigation_manager() { | 
|  | return web_state()->GetNavigationManager(); | 
|  | } | 
|  |  | 
|  | // Returns the last committed NavigationItem in |navigation_manager|. | 
|  | NavigationItem* GetLastCommittedItem() { | 
|  | return navigation_manager()->GetLastCommittedItem(); | 
|  | } | 
|  |  | 
|  | // Synchronously executes |script| on |web_state|'s JS injection receiver and | 
|  | // returns the result. | 
|  | id ExecuteJavaScript(NSString* script); | 
|  |  | 
|  | // Executes |block| and waits until |url| is successfully loaded in | 
|  | // |web_state_|. | 
|  | bool ExecuteBlockAndWaitForLoad(const GURL& url, | 
|  | ProceduralBlock block) WARN_UNUSED_RESULT; | 
|  |  | 
|  | // Navigates |web_state_| to |url| and waits for the page to be loaded. | 
|  | bool LoadUrl(const GURL& url) WARN_UNUSED_RESULT; | 
|  |  | 
|  | // Navigates |web_state_| using |params| and waits for the page to be loaded. | 
|  | bool LoadWithParams(const NavigationManager::WebLoadParams& params) | 
|  | WARN_UNUSED_RESULT; | 
|  |  | 
|  | // Synchronously removes data from |data_store|. | 
|  | // |websiteDataTypes| is from the constants defined in | 
|  | // "WebKit/WKWebsiteDataRecord". | 
|  | void RemoveWKWebViewCreatedData(WKWebsiteDataStore* data_store, | 
|  | NSSet* websiteDataTypes); | 
|  |  | 
|  | // Returns the index of |item| in the |navigation_manager|'s session history, | 
|  | // or NSNotFound if it is not present. | 
|  | NSInteger GetIndexOfNavigationItem(const web::NavigationItem* item); | 
|  |  | 
|  | web::TestWebStateDelegate web_state_delegate_; | 
|  |  | 
|  | private: | 
|  | // WebState used to load pages. | 
|  | std::unique_ptr<WebState> web_state_; | 
|  |  | 
|  | DISALLOW_COPY_AND_ASSIGN(WebIntTest); | 
|  | }; | 
|  |  | 
|  | }  // namespace web | 
|  |  | 
|  | #endif  // IOS_WEB_TEST_WEB_INT_TEST_H_ |