// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // Structs that hold data used in broadcasting notifications. #ifndef CHROME_BROWSER_HISTORY_HISTORY_NOTIFICATIONS_H__ #define CHROME_BROWSER_HISTORY_HISTORY_NOTIFICATIONS_H__ #pragma once #include <set> #include <vector> #include "googleurl/src/gurl.h" #include "chrome/browser/history/history_types.h" #include "chrome/browser/search_engines/template_url_id.h" namespace history { // Base class for history notifications. This needs only a virtual destructor // so that the history service's broadcaster can delete it when the request // is complete. struct HistoryDetails { public: virtual ~HistoryDetails() {} }; // Details for HISTORY_URL_VISITED. struct URLVisitedDetails : public HistoryDetails { URLVisitedDetails(); virtual ~URLVisitedDetails(); PageTransition::Type transition; URLRow row; // A list of redirects leading up to the URL represented by this struct. If // we have the redirect chain A -> B -> C and this struct represents visiting // C, then redirects[0]=B and redirects[1]=A. If there are no redirects, // this will be an empty vector. history::RedirectList redirects; }; // Details for NOTIFY_HISTORY_TYPED_URLS_MODIFIED. struct URLsModifiedDetails : public HistoryDetails { URLsModifiedDetails(); virtual ~URLsModifiedDetails(); // Lists the information for each of the URLs affected. std::vector<URLRow> changed_urls; }; // Details for NOTIFY_HISTORY_URLS_DELETED. struct URLsDeletedDetails : public HistoryDetails { URLsDeletedDetails(); virtual ~URLsDeletedDetails(); // Set when all history was deleted. False means just a subset was deleted. bool all_history; // The list of unique URLs affected. This is valid only when a subset of // history is deleted. When all of it is deleted, this will be empty, since // we do not bother to list all URLs. std::set<GURL> urls; }; // Details for NOTIFY_URLS_STARRED. struct URLsStarredDetails : public HistoryDetails { explicit URLsStarredDetails(bool being_starred); virtual ~URLsStarredDetails(); // The new starred state of the list of URLs. True when they are being // starred, false when they are being unstarred. bool starred; // The list of URLs that are changing. std::set<GURL> changed_urls; }; // Details for NOTIFY_FAVICON_CHANGED. struct FaviconChangeDetails : public HistoryDetails { FaviconChangeDetails(); virtual ~FaviconChangeDetails(); std::set<GURL> urls; }; // Details for HISTORY_KEYWORD_SEARCH_TERM_UPDATED. struct KeywordSearchTermDetails : public HistoryDetails { KeywordSearchTermDetails(); ~KeywordSearchTermDetails(); GURL url; TemplateURLID keyword_id; string16 term; }; } // namespace history #endif // CHROME_BROWSER_HISTORY_HISTORY_NOTIFICATIONS_H__