blob: cdf01e6c88e48d43826bb7e83aa31266e498c475 [file] [log] [blame]
// Copyright 2025 The Chromium Authors
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#import "ios/chrome/browser/omnibox/model/omnibox_controller_ios.h"
#import <stddef.h>
#import <memory>
#import "base/test/task_environment.h"
#import "components/omnibox/browser/autocomplete_classifier.h"
#import "components/omnibox/browser/autocomplete_controller.h"
#import "components/omnibox/browser/autocomplete_provider.h"
#import "components/omnibox/browser/test_omnibox_client.h"
#import "components/open_from_clipboard/fake_clipboard_recent_content.h"
#import "testing/gtest/include/gtest/gtest.h"
#import "testing/platform_test.h"
class OmniboxControllerIOSTest : public PlatformTest {
protected:
OmniboxControllerIOSTest() {
// AutocompleteController needs an instance of ClipboardRecentContent to
// create the ClipboardProvider. The instance can be nullptr in iOS tests.
ClipboardRecentContent::SetInstance(
std::make_unique<FakeClipboardRecentContent>());
client_ = std::make_unique<TestOmniboxClient>();
omnibox_controller_ = std::make_unique<OmniboxControllerIOS>(client_.get());
}
protected:
base::test::TaskEnvironment task_environment_;
std::unique_ptr<TestOmniboxClient> client_;
std::unique_ptr<OmniboxControllerIOS> omnibox_controller_;
};
// Tests that the list of autocomplete providers created by the
// OmniboxController matches the expectations.
TEST_F(OmniboxControllerIOSTest, CheckDefaultAutocompleteProviders) {
int expected_providers = AutocompleteClassifier::DefaultOmniboxProviders();
for (const auto& provider :
omnibox_controller_->autocomplete_controller()->providers()) {
// Ensure this is a provider we wanted.
int type = provider->type();
ASSERT_TRUE(expected_providers & type);
// Remove it from expectations so we fail if it's there twice.
expected_providers &= ~type;
}
// Ensure we saw all the providers we expected.
ASSERT_EQ(0, expected_providers);
}