Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(313)

Side by Side Diff: chrome/browser/ui/webui/ntp/suggestions_combiner.h

Issue 1141843004: NTP Zombie Code Slayer II: Suggestions Page (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: and remove urls Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright (c) 2012 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 #ifndef CHROME_BROWSER_UI_WEBUI_NTP_SUGGESTIONS_COMBINER_H_
6 #define CHROME_BROWSER_UI_WEBUI_NTP_SUGGESTIONS_COMBINER_H_
7
8 #include <vector>
9
10 #include "base/basictypes.h"
11 #include "base/memory/scoped_ptr.h"
12 #include "base/memory/scoped_vector.h"
13
14 class GURL;
15 class SuggestionsHandler;
16 class SuggestionsSource;
17 class Profile;
18
19 namespace base {
20 class DictionaryValue;
21 class ListValue;
22 }
23
24 // Combines many different sources of suggestions and generates data from it.
25 class SuggestionsCombiner {
26 public:
27 // Interface to be implemented by classes that will be notified of events from
28 // the SuggestionsCombiner.
29 class Delegate {
30 public:
31 virtual ~Delegate() {}
32
33 // Method that is called when new suggestions are ready from the
34 // SuggestionsCombiner.
35 virtual void OnSuggestionsReady() = 0;
36 };
37
38 virtual ~SuggestionsCombiner();
39
40 explicit SuggestionsCombiner(SuggestionsCombiner::Delegate* delegate,
41 Profile* profile);
42
43 // Add a new source. The SuggestionsCombiner takes ownership of |source|.
44 void AddSource(SuggestionsSource* source);
45
46 // Enables or disables debug mode. If debug mode is enabled, the sources are
47 // expected to provide additional data, which could be displayed, for example,
48 // in the chrome://suggestions-internals/ page.
49 void EnableDebug(bool enable);
50
51 // Fetch a new set of items from the various suggestion sources.
52 void FetchItems(Profile* profile);
53
54 base::ListValue* GetPageValues();
55
56 // Called by a source when its items are ready. Make sure suggestion sources
57 // call this method exactly once for each call to
58 // SuggestionsSource::FetchItems.
59 void OnItemsReady();
60
61 void SetSuggestionsCount(size_t suggestions_count);
62
63 private:
64 friend class SuggestionsCombinerTest;
65
66 // Fill the page values from the suggestion sources so they can be sent to
67 // the JavaScript side. This should only be called when all the suggestion
68 // sources have items ready.
69 void FillPageValues();
70
71 // Add extra information to page values that should be common across all
72 // suggestion sources.
73 void AddExtendedInformation(base::DictionaryValue* page_value);
74
75 // Checks if a URL is already open for the current profile. URLs open in an
76 // incognito window are not reported.
77 bool IsUrlAlreadyOpen(const GURL& url);
78
79 typedef ScopedVector<SuggestionsSource> SuggestionsSources;
80
81 // List of all the suggestions sources that will be combined to generate a
82 // single list of suggestions.
83 SuggestionsSources sources_;
84
85 // Counter tracking the number of sources that are currently asynchronously
86 // fetching their data.
87 int sources_fetching_count_;
88
89 // The delegate to notify once items are ready.
90 SuggestionsCombiner::Delegate* delegate_;
91
92 // Number of suggestions to generate. Used to distribute the suggestions
93 // between the various sources.
94 size_t suggestions_count_;
95
96 // Informations to send to the javascript side.
97 scoped_ptr<base::ListValue> page_values_;
98
99 // Whether debug mode is enabled or not (debug mode provides more data in the
100 // results).
101 bool debug_enabled_;
102
103 Profile* profile_;
104
105 DISALLOW_COPY_AND_ASSIGN(SuggestionsCombiner);
106 };
107
108 #endif // CHROME_BROWSER_UI_WEBUI_NTP_SUGGESTIONS_COMBINER_H_
OLDNEW
« no previous file with comments | « chrome/browser/ui/webui/ntp/ntp_resource_cache.cc ('k') | chrome/browser/ui/webui/ntp/suggestions_combiner.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698