in components/places/src/storage/history_metadata.rs [949:1172]
fn test_note_observation() {
let conn = PlacesDb::open_in_memory(ConnectionType::ReadWrite).unwrap();
assert_table_size!(&conn, "moz_places_metadata", 0);
assert_total_after_observation!(&conn,
total_records_after 1,
total_view_time_after 1500,
url "http://mozilla.com/",
view_time Some(1500),
search_term None,
document_type Some(DocumentType::Regular),
referrer_url None,
title None
);
// debounced! total time was updated
assert_total_after_observation!(&conn,
total_records_after 1,
total_view_time_after 2500,
url "http://mozilla.com/",
view_time Some(1000),
search_term None,
document_type Some(DocumentType::Regular),
referrer_url None,
title None
);
// different document type, record updated
assert_total_after_observation!(&conn,
total_records_after 1,
total_view_time_after 3500,
url "http://mozilla.com/",
view_time Some(1000),
search_term None,
document_type Some(DocumentType::Media),
referrer_url None,
title None
);
// referrer set
assert_total_after_observation!(&conn,
total_records_after 2,
total_view_time_after 2000,
url "http://mozilla.com/",
view_time Some(2000),
search_term None,
document_type Some(DocumentType::Media),
referrer_url Some("https://news.website"),
title None
);
// search term and referrer are set
assert_total_after_observation!(&conn,
total_records_after 3,
total_view_time_after 1100,
url "http://mozilla.com/",
view_time Some(1100),
search_term Some("firefox"),
document_type Some(DocumentType::Media),
referrer_url Some("https://www.google.com/search?client=firefox-b-d&q=firefox"),
title None
);
// debounce!
assert_total_after_observation!(&conn,
total_records_after 3,
total_view_time_after 6100,
url "http://mozilla.com/",
view_time Some(5000),
search_term Some("firefox"),
document_type Some(DocumentType::Media),
referrer_url Some("https://www.google.com/search?client=firefox-b-d&q=firefox"),
title None
);
// different url now
assert_total_after_observation!(&conn,
total_records_after 4,
total_view_time_after 3000,
url "http://mozilla.com/another",
view_time Some(3000),
search_term None,
document_type Some(DocumentType::Regular),
referrer_url Some("https://news.website/tech"),
title None
);
// shared origin for both url and referrer
assert_total_after_observation!(&conn,
total_records_after 5,
total_view_time_after 100000,
url "https://www.youtube.com/watch?v=tpiyEe_CqB4",
view_time Some(100000),
search_term Some("cute cat"),
document_type Some(DocumentType::Media),
referrer_url Some("https://www.youtube.com/results?search_query=cute+cat"),
title None
);
// empty search term/referrer url are treated the same as None
assert_total_after_observation!(&conn,
total_records_after 6,
total_view_time_after 80000,
url "https://www.youtube.com/watch?v=daff43jif3",
view_time Some(80000),
search_term Some(""),
document_type Some(DocumentType::Media),
referrer_url Some(""),
title None
);
assert_total_after_observation!(&conn,
total_records_after 6,
total_view_time_after 90000,
url "https://www.youtube.com/watch?v=daff43jif3",
view_time Some(10000),
search_term None,
document_type Some(DocumentType::Media),
referrer_url None,
title None
);
// document type recording
assert_total_after_observation!(&conn,
total_records_after 7,
total_view_time_after 0,
url "https://www.youtube.com/watch?v=fds32fds",
view_time None,
search_term None,
document_type Some(DocumentType::Media),
referrer_url None,
title None
);
// now, update the view time as a separate call
assert_total_after_observation!(&conn,
total_records_after 7,
total_view_time_after 1338,
url "https://www.youtube.com/watch?v=fds32fds",
view_time Some(1338),
search_term None,
document_type None,
referrer_url None,
title None
);
// and again, bump the view time
assert_total_after_observation!(&conn,
total_records_after 7,
total_view_time_after 2000,
url "https://www.youtube.com/watch?v=fds32fds",
view_time Some(662),
search_term None,
document_type None,
referrer_url None,
title None
);
// now try the other way - record view time first, document type after.
// and again, bump the view time
assert_after_observation!(&conn,
total_records_after 8,
total_view_time_after 662,
url "https://www.youtube.com/watch?v=dasdg34d",
view_time Some(662),
search_term None,
document_type None,
referrer_url None,
title None,
assertion |m: HistoryMetadata| { assert_eq!(DocumentType::Regular, m.document_type) }
);
assert_after_observation!(&conn,
total_records_after 8,
total_view_time_after 662,
url "https://www.youtube.com/watch?v=dasdg34d",
view_time None,
search_term None,
document_type Some(DocumentType::Media),
referrer_url None,
title None,
assertion |m: HistoryMetadata| { assert_eq!(DocumentType::Media, m.document_type) }
);
// document type not overwritten (e.g. remains 1, not default 0).
assert_after_observation!(&conn,
total_records_after 8,
total_view_time_after 675,
url "https://www.youtube.com/watch?v=dasdg34d",
view_time Some(13),
search_term None,
document_type None,
referrer_url None,
title None,
assertion |m: HistoryMetadata| { assert_eq!(DocumentType::Media, m.document_type) }
);
// can set title on creating a new record
assert_after_observation!(&conn,
total_records_after 9,
total_view_time_after 13,
url "https://www.youtube.com/watch?v=dasdsada",
view_time Some(13),
search_term None,
document_type None,
referrer_url None,
title Some("hello!"),
assertion |m: HistoryMetadata| { assert_eq!(Some(String::from("hello!")), m.title) }
);
// can not update title after
assert_after_observation!(&conn,
total_records_after 9,
total_view_time_after 26,
url "https://www.youtube.com/watch?v=dasdsada",
view_time Some(13),
search_term None,
document_type None,
referrer_url None,
title Some("world!"),
assertion |m: HistoryMetadata| { assert_eq!(Some(String::from("hello!")), m.title) }
);
}