1c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
2c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Use of this source code is governed by a BSD-style license that can be
3c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// found in the LICENSE file.
4c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
5c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Structs that hold data used in broadcasting notifications.
6c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
7c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#ifndef CHROME_BROWSER_HISTORY_HISTORY_NOTIFICATIONS_H__
8c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#define CHROME_BROWSER_HISTORY_HISTORY_NOTIFICATIONS_H__
93345a6884c488ff3a535c2c9acdd33d74b37e311Iain Merrick#pragma once
10c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
11c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <set>
12c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include <vector>
13c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
14c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "googleurl/src/gurl.h"
15c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#include "chrome/browser/history/history_types.h"
16513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch#include "chrome/browser/search_engines/template_url_id.h"
17c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
18c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochnamespace history {
19c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
20c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Base class for history notifications. This needs only a virtual destructor
21c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// so that the history service's broadcaster can delete it when the request
22c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// is complete.
23c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstruct HistoryDetails {
24c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch public:
25c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  virtual ~HistoryDetails() {}
26c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
27c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
28c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Details for HISTORY_URL_VISITED.
29c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstruct URLVisitedDetails : public HistoryDetails {
30731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  URLVisitedDetails();
31513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  virtual ~URLVisitedDetails();
32731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
33c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  PageTransition::Type transition;
34c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  URLRow row;
35c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
36c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // A list of redirects leading up to the URL represented by this struct. If
37c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // we have the redirect chain A -> B -> C and this struct represents visiting
38c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // C, then redirects[0]=B and redirects[1]=A.  If there are no redirects,
39c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // this will be an empty vector.
40c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  history::RedirectList redirects;
41c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
42c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
43c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Details for NOTIFY_HISTORY_TYPED_URLS_MODIFIED.
44c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstruct URLsModifiedDetails : public HistoryDetails {
45731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  URLsModifiedDetails();
46513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  virtual ~URLsModifiedDetails();
47731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
48c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Lists the information for each of the URLs affected.
49c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  std::vector<URLRow> changed_urls;
50c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
51c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
52c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Details for NOTIFY_HISTORY_URLS_DELETED.
53c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstruct URLsDeletedDetails : public HistoryDetails {
54731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  URLsDeletedDetails();
55513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  virtual ~URLsDeletedDetails();
56731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
57c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // Set when all history was deleted. False means just a subset was deleted.
58c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  bool all_history;
59c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
60c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // The list of unique URLs affected. This is valid only when a subset of
61c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // history is deleted. When all of it is deleted, this will be empty, since
62c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // we do not bother to list all URLs.
63c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  std::set<GURL> urls;
64c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
65c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
66c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Details for NOTIFY_URLS_STARRED.
67c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdochstruct URLsStarredDetails : public HistoryDetails {
68731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick  explicit URLsStarredDetails(bool being_starred);
69513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  virtual ~URLsStarredDetails();
70c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
71c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // The new starred state of the list of URLs. True when they are being
72c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // starred, false when they are being unstarred.
73c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  bool starred;
74c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
75c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  // The list of URLs that are changing.
76c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  std::set<GURL> changed_urls;
77c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
78c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
79c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch// Details for NOTIFY_FAVICON_CHANGED.
80ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsenstruct FaviconChangeDetails : public HistoryDetails {
81ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  FaviconChangeDetails();
82ddb351dbec246cf1fab5ec20d2d5520909041de1Kristian Monsen  virtual ~FaviconChangeDetails();
83731df977c0511bca2206b5f333555b1205ff1f43Iain Merrick
84c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch  std::set<GURL> urls;
85c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch};
86c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
87513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch// Details for HISTORY_KEYWORD_SEARCH_TERM_UPDATED.
88513209b27ff55e2841eac0e4120199c23acce758Ben Murdochstruct KeywordSearchTermDetails : public HistoryDetails {
89513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  KeywordSearchTermDetails();
90513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  ~KeywordSearchTermDetails();
91513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch
92513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  GURL url;
93513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  TemplateURLID keyword_id;
94513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch  string16 term;
95513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch};
96513209b27ff55e2841eac0e4120199c23acce758Ben Murdoch
97c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch}  // namespace history
98c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch
99c407dc5cd9bdc5668497f21b26b09d988ab439deBen Murdoch#endif  // CHROME_BROWSER_HISTORY_HISTORY_NOTIFICATIONS_H__
100