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