1// Copyright 2019 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 5#import "ios/chrome/browser/search_engines/extension_search_engine_data_updater.h" 6 7#include "base/macros.h" 8#include "base/strings/sys_string_conversions.h" 9#include "components/search_engines/template_url.h" 10#include "components/search_engines/template_url_data.h" 11#include "components/search_engines/template_url_service.h" 12#include "ios/chrome/common/app_group/app_group_constants.h" 13#include "testing/gtest/include/gtest/gtest.h" 14#include "testing/platform_test.h" 15 16#if !defined(__has_feature) || !__has_feature(objc_arc) 17#error "This file requires ARC support." 18#endif 19 20// Test fixture for ExtensionSearchEngineDataUpdater class. 21class ExtensionSearchEngineDataUpdaterTest : public PlatformTest { 22 protected: 23 ExtensionSearchEngineDataUpdaterTest() 24 : search_by_image_key_(base::SysUTF8ToNSString( 25 app_group::kChromeAppGroupSupportsSearchByImage)) {} 26 27 void SetUp() override { 28 PlatformTest::SetUp(); 29 30 template_url_service_.reset(new TemplateURLService(nullptr, 0)); 31 template_url_service_->Load(); 32 observer_.reset( 33 new ExtensionSearchEngineDataUpdater(template_url_service_.get())); 34 35 NSUserDefaults* shared_defaults = app_group::GetGroupUserDefaults(); 36 [shared_defaults setBool:NO forKey:search_by_image_key_]; 37 } 38 39 bool StoredSupportsSearchByImage() { 40 NSUserDefaults* shared_defaults = app_group::GetGroupUserDefaults(); 41 return [shared_defaults boolForKey:search_by_image_key_]; 42 } 43 44 std::unique_ptr<TemplateURLService> template_url_service_; 45 46 private: 47 std::unique_ptr<ExtensionSearchEngineDataUpdater> observer_; 48 NSString* search_by_image_key_; 49}; 50 51TEST_F(ExtensionSearchEngineDataUpdaterTest, AddSupportedSearchEngine) { 52 ASSERT_FALSE(StoredSupportsSearchByImage()); 53 54 const char kImageSearchURL[] = "http://foo.com/sbi"; 55 const char kPostParamsString[] = "image_content={google:imageThumbnail}"; 56 57 TemplateURLData supported_template_url_data{}; 58 supported_template_url_data.image_url = kImageSearchURL; 59 supported_template_url_data.image_url_post_params = kPostParamsString; 60 TemplateURL supported_template_url(supported_template_url_data); 61 62 template_url_service_->SetUserSelectedDefaultSearchProvider( 63 &supported_template_url); 64 65 ASSERT_TRUE(StoredSupportsSearchByImage()); 66} 67 68TEST_F(ExtensionSearchEngineDataUpdaterTest, AddUnsupportedSearchEngine) { 69 ASSERT_FALSE(StoredSupportsSearchByImage()); 70 71 TemplateURLData unsupported_template_url_data{}; 72 TemplateURL unsupported_template_url(unsupported_template_url_data); 73 74 template_url_service_->SetUserSelectedDefaultSearchProvider( 75 &unsupported_template_url); 76 77 ASSERT_FALSE(StoredSupportsSearchByImage()); 78} 79