1 // Copyright 2018 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_FEED_INTERNALS_FEED_INTERNALS_PAGE_HANDLER_H_
6 #define CHROME_BROWSER_UI_WEBUI_FEED_INTERNALS_FEED_INTERNALS_PAGE_HANDLER_H_
7 
8 #include <vector>
9 
10 #include "base/macros.h"
11 #include "base/memory/weak_ptr.h"
12 #include "chrome/browser/ui/webui/feed_internals/feed_internals.mojom.h"
13 #include "mojo/public/cpp/bindings/pending_receiver.h"
14 #include "mojo/public/cpp/bindings/receiver.h"
15 
16 class PrefService;
17 
18 namespace feed {
19 class FeedHostService;
20 class FeedOfflineHost;
21 class FeedSchedulerHost;
22 }  // namespace feed
23 
24 namespace offline_pages {
25 struct PrefetchSuggestion;
26 }  // namespace offline_pages
27 
28 // Concrete implementation of feed_internals::mojom::PageHandler.
29 class FeedInternalsPageHandler : public feed_internals::mojom::PageHandler {
30  public:
31   FeedInternalsPageHandler(
32       mojo::PendingReceiver<feed_internals::mojom::PageHandler> receiver,
33       feed::FeedHostService* feed_host_service,
34       PrefService* pref_service);
35   ~FeedInternalsPageHandler() override;
36 
37   // feed_internals::mojom::PageHandler
38   void GetGeneralProperties(GetGeneralPropertiesCallback) override;
39   void GetUserClassifierProperties(
40       GetUserClassifierPropertiesCallback) override;
41   void ClearUserClassifierProperties() override;
42   void GetLastFetchProperties(GetLastFetchPropertiesCallback) override;
43   void ClearCachedDataAndRefreshFeed() override;
44   void RefreshFeed() override;
45   void GetCurrentContent(GetCurrentContentCallback) override;
46   void GetFeedProcessScopeDump(GetFeedProcessScopeDumpCallback) override;
47   void GetFeedHistograms(GetFeedHistogramsCallback) override;
48   void OverrideFeedHost(const GURL& host) override;
49   void OverrideActionUploadEndpoint(const GURL& endpoint_url) override;
50   void OverrideFeedStreamData(const std::vector<uint8_t>& data) override;
51 
52  private:
53   mojo::Receiver<feed_internals::mojom::PageHandler> receiver_;
54 
55   void OnGetCurrentArticleSuggestionsDone(
56       GetCurrentContentCallback callback,
57       std::vector<offline_pages::PrefetchSuggestion> suggestions);
58 
59   bool IsFeedAllowed();
60 
61   // Services that provide the data and functionality.
62   feed::FeedSchedulerHost* feed_scheduler_host_;
63   feed::FeedOfflineHost* feed_offline_host_;
64   PrefService* pref_service_;
65 
66   base::WeakPtrFactory<FeedInternalsPageHandler> weak_ptr_factory_{this};
67 
68   DISALLOW_COPY_AND_ASSIGN(FeedInternalsPageHandler);
69 };
70 
71 #endif  // CHROME_BROWSER_UI_WEBUI_FEED_INTERNALS_FEED_INTERNALS_PAGE_HANDLER_H_
72