1 // Copyright (c) 2006-2008 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 // Structs that hold data used in broadcasting notifications. 6 7 #ifndef CHROME_BROWSER_HISTORY_HISTORY_NOTIFICATIONS_H__ 8 #define CHROME_BROWSER_HISTORY_HISTORY_NOTIFICATIONS_H__ 9 #pragma once 10 11 #include <set> 12 #include <vector> 13 14 #include "googleurl/src/gurl.h" 15 #include "chrome/browser/history/history_types.h" 16 #include "chrome/browser/search_engines/template_url_id.h" 17 18 namespace history { 19 20 // Base class for history notifications. This needs only a virtual destructor 21 // so that the history service's broadcaster can delete it when the request 22 // is complete. 23 struct HistoryDetails { 24 public: 25 virtual ~HistoryDetails() {} 26 }; 27 28 // Details for HISTORY_URL_VISITED. 29 struct URLVisitedDetails : public HistoryDetails { 30 URLVisitedDetails(); 31 virtual ~URLVisitedDetails(); 32 33 PageTransition::Type transition; 34 URLRow row; 35 36 // A list of redirects leading up to the URL represented by this struct. If 37 // we have the redirect chain A -> B -> C and this struct represents visiting 38 // C, then redirects[0]=B and redirects[1]=A. If there are no redirects, 39 // this will be an empty vector. 40 history::RedirectList redirects; 41 }; 42 43 // Details for NOTIFY_HISTORY_TYPED_URLS_MODIFIED. 44 struct URLsModifiedDetails : public HistoryDetails { 45 URLsModifiedDetails(); 46 virtual ~URLsModifiedDetails(); 47 48 // Lists the information for each of the URLs affected. 49 std::vector<URLRow> changed_urls; 50 }; 51 52 // Details for NOTIFY_HISTORY_URLS_DELETED. 53 struct URLsDeletedDetails : public HistoryDetails { 54 URLsDeletedDetails(); 55 virtual ~URLsDeletedDetails(); 56 57 // Set when all history was deleted. False means just a subset was deleted. 58 bool all_history; 59 60 // The list of unique URLs affected. This is valid only when a subset of 61 // history is deleted. When all of it is deleted, this will be empty, since 62 // we do not bother to list all URLs. 63 std::set<GURL> urls; 64 }; 65 66 // Details for NOTIFY_URLS_STARRED. 67 struct URLsStarredDetails : public HistoryDetails { 68 explicit URLsStarredDetails(bool being_starred); 69 virtual ~URLsStarredDetails(); 70 71 // The new starred state of the list of URLs. True when they are being 72 // starred, false when they are being unstarred. 73 bool starred; 74 75 // The list of URLs that are changing. 76 std::set<GURL> changed_urls; 77 }; 78 79 // Details for NOTIFY_FAVICON_CHANGED. 80 struct FaviconChangeDetails : public HistoryDetails { 81 FaviconChangeDetails(); 82 virtual ~FaviconChangeDetails(); 83 84 std::set<GURL> urls; 85 }; 86 87 // Details for HISTORY_KEYWORD_SEARCH_TERM_UPDATED. 88 struct KeywordSearchTermDetails : public HistoryDetails { 89 KeywordSearchTermDetails(); 90 ~KeywordSearchTermDetails(); 91 92 GURL url; 93 TemplateURLID keyword_id; 94 string16 term; 95 }; 96 97 } // namespace history 98 99 #endif // CHROME_BROWSER_HISTORY_HISTORY_NOTIFICATIONS_H__ 100