1 // Copyright 2013 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_DOM_DISTILLER_WEBUI_DOM_DISTILLER_HANDLER_H_ 6 #define COMPONENTS_DOM_DISTILLER_WEBUI_DOM_DISTILLER_HANDLER_H_ 7 8 #include <string> 9 10 #include "base/memory/weak_ptr.h" 11 #include "base/values.h" 12 #include "content/public/browser/web_ui_message_handler.h" 13 14 namespace dom_distiller { 15 16 class DomDistillerService; 17 18 // Handler class for DOM Distiller list operations. 19 class DomDistillerHandler : public content::WebUIMessageHandler { 20 public: 21 // The lifetime of |service| has to outlive this handler. 22 DomDistillerHandler(DomDistillerService* service, 23 const std::string& scheme); 24 virtual ~DomDistillerHandler(); 25 26 // content::WebUIMessageHandler implementation. 27 virtual void RegisterMessages() OVERRIDE; 28 29 // Callback from JavaScript for the "requestEntries" message. This 30 // requests the list of entries and returns it to the front end by calling 31 // "onReceivedEntries". There are no JavaScript arguments to this method. 32 void HandleRequestEntries(const ListValue* args); 33 34 // Callback from JavaScript for when an article should be added. The first 35 // element in |args| should be a string representing the URL to be added. 36 void HandleAddArticle(const ListValue* args); 37 38 // Callback from JavaScript for when an article is selected. The first element 39 // in |args| should be a string representing the ID of the entry to be 40 // selected. 41 void HandleSelectArticle(const ListValue* args); 42 43 private: 44 // Factory for the creating refs in callbacks. 45 base::WeakPtrFactory<DomDistillerHandler> weak_ptr_factory_; 46 47 // The DomDistillerService. 48 DomDistillerService* service_; 49 50 // The scheme for DOM distiller articles. 51 std::string article_scheme_; 52 53 DISALLOW_COPY_AND_ASSIGN(DomDistillerHandler); 54 }; 55 56 } // namespace dom_distiller 57 58 #endif // COMPONENTS_DOM_DISTILLER_WEBUI_DOM_DISTILLER_HANDLER_H_ 59