@@ -562,6 +562,12 @@ pub fn delete_all_metadata_for_page(db: &PlacesDb, place_id: RowId) -> Result<()
562562 Ok ( ( ) )
563563}
564564
565+ /// Delete all metadata for search queries table.
566+ pub fn delete_all_metadata_for_search ( db : & PlacesDb ) -> Result < ( ) > {
567+ db. execute_cached ( "DELETE FROM moz_places_metadata_search_queries" , [ ] ) ?;
568+ Ok ( ( ) )
569+ }
570+
565571pub fn delete_metadata (
566572 db : & PlacesDb ,
567573 url : & Url ,
@@ -2392,6 +2398,96 @@ mod tests {
23922398 assert_table_size ! ( & conn, "moz_places_metadata_search_queries" , 0 ) ;
23932399 }
23942400
2401+ #[ test]
2402+ fn test_delete_all_metadata_for_search ( ) {
2403+ let conn = PlacesDb :: open_in_memory ( ConnectionType :: ReadWrite ) . expect ( "memory db" ) ;
2404+
2405+ note_observation ! ( & conn,
2406+ url "https://www.mozilla.org/1/" ,
2407+ view_time None ,
2408+ search_term Some ( "search_term_1" ) ,
2409+ document_type None ,
2410+ referrer_url None ,
2411+ title None
2412+ ) ;
2413+
2414+ note_observation ! ( & conn,
2415+ url "https://www.mozilla.org/2/" ,
2416+ view_time None ,
2417+ search_term Some ( "search_term_2" ) ,
2418+ document_type None ,
2419+ referrer_url None ,
2420+ title None
2421+ ) ;
2422+
2423+ assert_table_size ! ( & conn, "moz_places_metadata" , 2 ) ;
2424+ assert_table_size ! ( & conn, "moz_places_metadata_search_queries" , 2 ) ;
2425+
2426+ delete_all_metadata_for_search ( & conn) . expect ( "query ok" ) ;
2427+
2428+ assert_table_size ! ( & conn, "moz_places_metadata" , 0 ) ;
2429+ assert_table_size ! ( & conn, "moz_places_metadata_search_queries" , 0 ) ;
2430+ }
2431+
2432+ #[ test]
2433+ fn test_delete_all_metadata_for_search_only_deletes_search_metadata ( ) {
2434+ let conn = PlacesDb :: open_in_memory ( ConnectionType :: ReadWrite ) . expect ( "memory db" ) ;
2435+
2436+ // url | search_term | referrer
2437+ // 1 | 1 | 0
2438+ // 1 | 0 | 1
2439+ // 1 | 1 | 0
2440+ // 1 | 0 | 1
2441+
2442+ note_observation ! ( & conn,
2443+ url "https://www.mozilla.org/1/" ,
2444+ view_time None ,
2445+ search_term Some ( "search_term_1" ) ,
2446+ document_type None ,
2447+ referrer_url None ,
2448+ title None
2449+ ) ;
2450+
2451+ note_observation ! (
2452+ & conn,
2453+ url "https://www.mozilla.org/2/" ,
2454+ view_time Some ( 20000 ) ,
2455+ search_term None ,
2456+ document_type Some ( DocumentType :: Media ) ,
2457+ referrer_url Some ( "https://www.google.com/search?client=firefox-b-d&q=mozilla+firefox" ) ,
2458+ title None
2459+ ) ;
2460+
2461+ note_observation ! ( & conn,
2462+ url "https://www.mozilla.org/3/" ,
2463+ view_time None ,
2464+ search_term Some ( "search_term_2" ) ,
2465+ document_type None ,
2466+ referrer_url None ,
2467+ title None
2468+ ) ;
2469+
2470+ note_observation ! (
2471+ & conn,
2472+ url "https://www.mozilla.org/4/" ,
2473+ view_time Some ( 20000 ) ,
2474+ search_term None ,
2475+ document_type Some ( DocumentType :: Regular ) ,
2476+ referrer_url Some ( "https://www.google.com/search?client=firefox-b-d&q=mozilla+firefox" ) ,
2477+ title None
2478+ ) ;
2479+
2480+ assert_eq ! ( 4 , get_since( & conn, 0 ) . expect( "get worked" ) . len( ) ) ;
2481+
2482+ assert_table_size ! ( & conn, "moz_places_metadata" , 4 ) ;
2483+ assert_table_size ! ( & conn, "moz_places_metadata_search_queries" , 2 ) ;
2484+
2485+ delete_all_metadata_for_search ( & conn) . expect ( "query ok" ) ;
2486+
2487+ assert_table_size ! ( & conn, "moz_places_metadata" , 2 ) ;
2488+ assert_table_size ! ( & conn, "moz_places_metadata_search_queries" , 0 ) ;
2489+ }
2490+
23952491 #[ test]
23962492 fn test_if_page_missing_behavior ( ) {
23972493 let conn = PlacesDb :: open_in_memory ( ConnectionType :: ReadWrite ) . expect ( "memory db" ) ;
0 commit comments