chromium/ios/web_view/test/web_view_inttest_base.h

// Copyright 2017 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

#ifndef IOS_WEB_VIEW_TEST_WEB_VIEW_INTTEST_BASE_H_
#define IOS_WEB_VIEW_TEST_WEB_VIEW_INTTEST_BASE_H_

#import <Foundation/Foundation.h>
#include <memory>
#include <string>

#include "components/variations/scoped_variations_ids_provider.h"
#include "testing/platform_test.h"

NS_ASSUME_NONNULL_BEGIN

namespace net {
namespace test_server {
class EmbeddedTestServer;
}  // namespace test_server
}  // namespace net

@class CWVWebView;
class GURL;
@class NSURL;

namespace ios_web_view {

// A test fixture for testing CWVWebView. A test server is also created to
// support loading content. The server supports the urls returned by the GetUrl*
// methods below.
class WebViewInttestBase : public PlatformTest {
 protected:
  WebViewInttestBase();
  ~WebViewInttestBase() override;

  // Returns URL to an html page with title set to |title|.
  //
  // Call ASSERT_TRUE(test_server_->Start()) before accessing the returned URL.
  GURL GetUrlForPageWithTitle(const std::string& title);

  // Returns URL to an html page with |html| within page's body tags.
  //
  // Call ASSERT_TRUE(test_server_->Start()) before accessing the returned URL.
  GURL GetUrlForPageWithHtmlBody(const std::string& html);

  // Returns URL to an html page with title set to |title| and |body| within
  // the page's body tags.
  //
  // Call ASSERT_TRUE(test_server_->Start()) before accessing the returned URL.
  GURL GetUrlForPageWithTitleAndBody(const std::string& title,
                                     const std::string& body);

  // Returns URL to an html page with |html|. |html| contains entire html of the
  // page.
  //
  // Call ASSERT_TRUE(test_server_->Start()) before accessing the returned URL.
  GURL GetUrlForPageWithHtml(const std::string& html);

  variations::ScopedVariationsIdsProvider scoped_variations_ids_provider_{
      variations::VariationsIdsProvider::Mode::kUseSignedInState};

  // CWVWebView created with default configuration and frame equal to screen
  // bounds.
  CWVWebView* web_view_;

  // Embedded server for handling requests sent to the URLs returned by the
  // GetURL* methods.
  std::unique_ptr<net::test_server::EmbeddedTestServer> test_server_;
};

}  // namespace ios_web_view

NS_ASSUME_NONNULL_END

#endif  // IOS_WEB_VIEW_TEST_WEB_VIEW_INTTEST_BASE_H_