chromium/ios/chrome/browser/ui/omnibox/omnibox_test_util.h

// Copyright 2024 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_CHROME_BROWSER_UI_OMNIBOX_OMNIBOX_TEST_UTIL_H_
#define IOS_CHROME_BROWSER_UI_OMNIBOX_OMNIBOX_TEST_UTIL_H_

#import <memory>

struct AppLaunchConfiguration;
namespace net {
namespace test_server {
class HttpResponse;
struct HttpRequest;
}  // namespace test_server
}  // namespace net
@protocol GREYMatcher;
class GURL;

namespace omnibox {

#pragma mark Custom pages

// Web page to try X-Client-Data header.
extern const char kHeaderPageURL[];
extern const char kHeaderPageSuccess[];
extern const char kHeaderPageFailure[];

#pragma mark Page

/// Page number are limited to [1, 99].
using Page = unsigned long;  // NSUInteger.

/// Returns the content of `page`.
std::string PageContent(Page page);

/// Returns the title of `page`.
std::string PageTitle(Page page);

/// Returns the URL of `page`.
std::string PageURL(Page page);

#pragma mark Utils

/// Disables autocomplete providers of `provider_types` by forcing a fieldtrial
/// param in `configuration`.
/// `provider_types`:  Bitwise operation of `AutocompleteProvider::Type`.
///
/// Note: Don't include autocomplete_provider header as it pulls to many
/// dependencies.
void DisableAutocompleteProviders(AppLaunchConfiguration& configuration,
                                  int provider_types);

/// HTTP responses for omnibox test pages.
std::unique_ptr<net::test_server::HttpResponse> OmniboxHTTPResponses(
    const net::test_server::HttpRequest& request);

}  // namespace omnibox

#endif  // IOS_CHROME_BROWSER_UI_OMNIBOX_OMNIBOX_TEST_UTIL_H_