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

Side by Side Diff: components/ntp_snippets/sessions/foreign_sessions_suggestions_provider.h

Issue 2279123002: [Sync] Initial implementation of foreign sessions suggestions provider. (Closed)
Patch Set: Updating for comments, again! Created 4 years, 3 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 2016 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 COMPONENTS_NTP_SNIPPETS_SESSIONS_FOREIGN_SESSIONS_SUGGESTIONS_PROVIDER_H _
6 #define COMPONENTS_NTP_SNIPPETS_SESSIONS_FOREIGN_SESSIONS_SUGGESTIONS_PROVIDER_H _
7
8 #include <memory>
9 #include <set>
10 #include <string>
11 #include <vector>
12
13 #include "base/callback_forward.h"
14 #include "base/macros.h"
15 #include "components/ntp_snippets/category.h"
16 #include "components/ntp_snippets/category_status.h"
17 #include "components/ntp_snippets/content_suggestions_provider.h"
18 #include "components/sessions/core/session_types.h"
19 #include "components/sync_sessions/synced_session.h"
20
21 class PrefRegistrySimple;
22 class PrefService;
23
24 namespace ntp_snippets {
25
26 // Simple interface to get foreign tab data on demand and on change.
27 class ForeignSessionsProvider {
28 public:
29 virtual ~ForeignSessionsProvider() {}
30 virtual bool HasSessionsData() = 0;
31 virtual std::vector<const sync_sessions::SyncedSession*>
32 GetAllForeignSessions() = 0;
33 // Should only be called at most once.
34 virtual void SubscribeForForeignTabChange(
35 const base::Closure& change_callback) = 0;
36 };
37
38 // Provides content suggestions from foreign sessions.
39 class ForeignSessionsSuggestionsProvider : public ContentSuggestionsProvider {
40 public:
41 ForeignSessionsSuggestionsProvider(
42 ContentSuggestionsProvider::Observer* observer,
43 CategoryFactory* category_factory,
44 std::unique_ptr<ForeignSessionsProvider> foreign_sessions_provider,
45 PrefService* pref_service);
46 ~ForeignSessionsSuggestionsProvider() override;
47
48 static void RegisterProfilePrefs(PrefRegistrySimple* registry);
49
50 private:
51 friend class ForeignSessionsSuggestionsProviderTest;
52 struct SessionData;
53
54 // ContentSuggestionsProvider implementation.
55 CategoryStatus GetCategoryStatus(Category category) override;
56 CategoryInfo GetCategoryInfo(Category category) override;
57 void DismissSuggestion(const std::string& suggestion_id) override;
58 void FetchSuggestionImage(const std::string& suggestion_id,
59 const ImageFetchedCallback& callback) override;
60 void ClearHistory(
61 base::Time begin,
62 base::Time end,
63 const base::Callback<bool(const GURL& url)>& filter) override;
64 void ClearCachedSuggestions(Category category) override;
65 void GetDismissedSuggestionsForDebugging(
66 Category category,
67 const DismissedSuggestionsCallback& callback) override;
68 void ClearDismissedSuggestionsForDebugging(Category category) override;
69
70 void OnForeignTabChange();
71 std::vector<ContentSuggestion> BuildSuggestions();
72 std::vector<SessionData> GetSuggestionCandidates();
73 ContentSuggestion BuildSuggestion(const SessionData& data);
74
75 CategoryStatus category_status_;
76 const Category provided_category_;
77 std::unique_ptr<ForeignSessionsProvider> foreign_sessions_provider_;
78 PrefService* pref_service_;
79
80 DISALLOW_COPY_AND_ASSIGN(ForeignSessionsSuggestionsProvider);
81 };
82
83 } // namespace ntp_snippets
84
85 #endif // COMPONENTS_NTP_SNIPPETS_SESSIONS_FOREIGN_SESSIONS_SUGGESTIONS_PROVIDE R_H_
OLDNEW
« no previous file with comments | « components/ntp_snippets/sessions/DEPS ('k') | components/ntp_snippets/sessions/foreign_sessions_suggestions_provider.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698