diff --git a/components/search/src/configuration_types.rs b/components/search/src/configuration_types.rs index 3c564de007..f3e7abc2e2 100644 --- a/components/search/src/configuration_types.rs +++ b/components/search/src/configuration_types.rs @@ -110,8 +110,7 @@ pub(crate) struct JSONEngineBase { pub charset: Option, /// The classification of search engine according to the main search types - /// (e.g. general, shopping, travel, dictionary). Currently, only marking as - /// a general search engine is supported. + /// (e.g. general, ai, and unknown). #[serde(default)] pub classification: SearchEngineClassification, diff --git a/components/search/src/selector.rs b/components/search/src/selector.rs index 44927aae5d..104ce9d486 100644 --- a/components/search/src/selector.rs +++ b/components/search/src/selector.rs @@ -286,7 +286,9 @@ mod tests { json!({ "data": [ EngineRecord::full("test1", "Test 1").build(), - EngineRecord::minimal("test2", "Test 2").build(), + EngineRecord::minimal("test2", "Test 2") + .classification("ai") + .build(), { "recordType": "defaultEngines", "globalDefault": "test1", @@ -312,8 +314,12 @@ mod tests { result.unwrap(), RefinedSearchConfig { engines: vec!( - ExpectedEngine::full("test1", "Test 1").build(), - ExpectedEngine::minimal("test2", "Test 2").build(), + ExpectedEngine::full("test1", "Test 1") + .classification(SearchEngineClassification::General) + .build(), + ExpectedEngine::minimal("test2", "Test 2") + .classification(SearchEngineClassification::Ai) + .build(), ), app_default_engine_id: Some("test1".to_string()), app_private_default_engine_id: Some("test2".to_string()) diff --git a/components/search/src/test_helpers.rs b/components/search/src/test_helpers.rs index 9cb2470d0d..16731bf972 100644 --- a/components/search/src/test_helpers.rs +++ b/components/search/src/test_helpers.rs @@ -137,6 +137,11 @@ impl EngineRecord { record } + pub fn classification(mut self, classification: &str) -> Self { + self.classification = classification.to_string(); + self + } + pub fn add_variant(mut self, vb: Variant) -> Self { self.variants.push(vb.build()); self @@ -359,6 +364,11 @@ impl ExpectedEngine { } } + pub fn classification(mut self, classification: SearchEngineClassification) -> Self { + self.engine.classification = classification; + self + } + pub fn partner_code(mut self, code: &str) -> Self { self.engine.partner_code = code.to_string(); self diff --git a/components/search/src/types.rs b/components/search/src/types.rs index 233c9f8f14..4a17e25a64 100644 --- a/components/search/src/types.rs +++ b/components/search/src/types.rs @@ -175,9 +175,10 @@ pub struct SearchEngineUrls { #[derive(Debug, uniffi::Enum, PartialEq, Deserialize, Clone, Default)] #[serde(rename_all = "lowercase")] pub enum SearchEngineClassification { - General = 2, #[default] Unknown = 1, + General = 2, + Ai = 3, } impl SearchEngineClassification { @@ -185,6 +186,7 @@ impl SearchEngineClassification { match self { SearchEngineClassification::Unknown => "unknown", SearchEngineClassification::General => "general", + SearchEngineClassification::Ai => "ai", } } }