blob: 969a7e7f41150cc1b2e06c6f362dc9a8267238e1 [file] [log] [blame]
Pengchengec2fc8ad2018-11-27 15:45:541// Copyright 2018 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
Tommy C. Li06ec26a2019-06-10 18:01:425#include "components/omnibox/browser/remote_suggestions_service.h"
Pengchengec2fc8ad2018-11-27 15:45:546
7#include <memory>
8#include <string>
9
10#include "base/bind.h"
11#include "base/memory/scoped_refptr.h"
12#include "base/test/bind_test_util.h"
13#include "base/test/test_mock_time_task_runner.h"
Mark Pearsonca4231e2019-05-09 04:26:1914#include "components/omnibox/common/omnibox_features.h"
Pengchengec2fc8ad2018-11-27 15:45:5415#include "components/search_engines/template_url_service.h"
16#include "net/base/load_flags.h"
17#include "services/network/public/cpp/resource_request.h"
18#include "services/network/public/cpp/shared_url_loader_factory.h"
19#include "services/network/public/cpp/simple_url_loader.h"
20#include "services/network/public/cpp/weak_wrapper_shared_url_loader_factory.h"
21#include "services/network/test/test_url_loader_factory.h"
22#include "testing/gmock/include/gmock/gmock.h"
23#include "testing/gtest/include/gtest/gtest.h"
24
Tommy C. Li06ec26a2019-06-10 18:01:4225class RemoteSuggestionsServiceTest : public testing::Test {
Pengchengec2fc8ad2018-11-27 15:45:5426 public:
Tommy C. Li06ec26a2019-06-10 18:01:4227 RemoteSuggestionsServiceTest()
Pengchengec2fc8ad2018-11-27 15:45:5428 : mock_task_runner_(new base::TestMockTimeTaskRunner(
29 base::TestMockTimeTaskRunner::Type::kBoundToThread)) {}
30
31 scoped_refptr<network::SharedURLLoaderFactory> GetUrlLoaderFactory() {
32 return base::MakeRefCounted<network::WeakWrapperSharedURLLoaderFactory>(
33 &test_url_loader_factory_);
34 }
35
36 void RunAndWait() { mock_task_runner_->FastForwardUntilNoTasksRemain(); }
37
38 void OnRequestStart(std::unique_ptr<network::SimpleURLLoader> loader) {}
39
40 void OnRequestComplete(const network::SimpleURLLoader* source,
41 std::unique_ptr<std::string> response_body) {}
42
43 protected:
44 scoped_refptr<base::TestMockTimeTaskRunner> mock_task_runner_;
45 network::TestURLLoaderFactory test_url_loader_factory_;
46};
47
Tommy C. Li06ec26a2019-06-10 18:01:4248TEST_F(RemoteSuggestionsServiceTest, EnsureAttachCookies) {
Pengchengec2fc8ad2018-11-27 15:45:5449 network::ResourceRequest resource_request;
50 test_url_loader_factory_.SetInterceptor(
51 base::BindLambdaForTesting([&](const network::ResourceRequest& request) {
52 resource_request = request;
53 }));
54
Tommy C. Li06ec26a2019-06-10 18:01:4255 RemoteSuggestionsService service(nullptr /* identity_manager */,
56 GetUrlLoaderFactory());
Pengchengec2fc8ad2018-11-27 15:45:5457 base::Time visit_time;
58 TemplateURLService template_url_service(nullptr, 0);
Tommy C. Li6aee62d52019-06-27 20:25:0059 TemplateURLRef::SearchTermsArgs search_terms_args;
60 search_terms_args.current_page_url = "https://www.google.com/";
Tommy C. Li06ec26a2019-06-10 18:01:4261 service.CreateSuggestionsRequest(
Tommy C. Li6aee62d52019-06-27 20:25:0062 search_terms_args, visit_time, &template_url_service,
Tommy C. Li06ec26a2019-06-10 18:01:4263 base::BindOnce(&RemoteSuggestionsServiceTest::OnRequestStart,
Pengchengec2fc8ad2018-11-27 15:45:5464 base::Unretained(this)),
Tommy C. Li06ec26a2019-06-10 18:01:4265 base::BindOnce(&RemoteSuggestionsServiceTest::OnRequestComplete,
Pengchengec2fc8ad2018-11-27 15:45:5466 base::Unretained(this)));
67
68 RunAndWait();
69 EXPECT_TRUE(resource_request.attach_same_site_cookies);
70 EXPECT_EQ(net::LOAD_DO_NOT_SAVE_COOKIES, resource_request.load_flags);
71 EXPECT_EQ(resource_request.url, resource_request.site_for_cookies);
72 const std::string kServiceUri = "https://www.google.com/complete/search";
73 EXPECT_EQ(kServiceUri,
74 resource_request.url.spec().substr(0, kServiceUri.size()));
75}