// 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. #include "components/omnibox/browser/clipboard_url_provider.h" #include #include "base/macros.h" #include "base/memory/ref_counted.h" #include "base/memory/scoped_ptr.h" #include "components/omnibox/browser/autocomplete_input.h" #include "components/omnibox/browser/mock_autocomplete_provider_client.h" #include "components/omnibox/browser/test_scheme_classifier.h" #include "components/open_from_clipboard/fake_clipboard_recent_content.h" #include "testing/gmock/include/gmock/gmock.h" #include "testing/gtest/include/gtest/gtest.h" #include "url/gurl.h" namespace { const char kCurrentURL[] = "http://example.com/current"; const char kClipboardURL[] = "http://example.com/clipboard"; class ClipboardURLProviderTest : public testing::Test { public: ClipboardURLProviderTest() : client_(new testing::NiceMock()), provider_( new ClipboardURLProvider(client_.get(), &clipboard_content_)) { SetClipboardUrl(GURL(kClipboardURL)); } ~ClipboardURLProviderTest() override {} void ClearClipboard() { clipboard_content_.SuppressClipboardContent(); } void SetClipboardUrl(const GURL& url) { clipboard_content_.SetClipboardContent(url, base::TimeDelta::FromMinutes(10)); } AutocompleteInput CreateAutocompleteInput(bool from_omnibox_focus) { return AutocompleteInput( base::string16(), base::string16::npos, std::string(), GURL(kCurrentURL), metrics::OmniboxEventProto::INVALID_SPEC, false, false, false, false, from_omnibox_focus, classifier_); } protected: TestSchemeClassifier classifier_; FakeClipboardRecentContent clipboard_content_; scoped_ptr> client_; scoped_refptr provider_; }; TEST_F(ClipboardURLProviderTest, NotFromOmniboxFocus) { provider_->Start(CreateAutocompleteInput(false), false); EXPECT_TRUE(provider_->matches().empty()); } TEST_F(ClipboardURLProviderTest, EmptyClipboard) { ClearClipboard(); provider_->Start(CreateAutocompleteInput(true), false); EXPECT_TRUE(provider_->matches().empty()); } TEST_F(ClipboardURLProviderTest, ClipboardIsCurrentURL) { SetClipboardUrl(GURL(kCurrentURL)); provider_->Start(CreateAutocompleteInput(true), false); EXPECT_TRUE(provider_->matches().empty()); } TEST_F(ClipboardURLProviderTest, HasMultipleMatches) { provider_->Start(CreateAutocompleteInput(true), false); ASSERT_GE(provider_->matches().size(), 1U); EXPECT_EQ(GURL(kClipboardURL), provider_->matches().back().destination_url); } } // namespace