// Copyright 2013 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #ifndef COMPONENTS_DOM_DISTILLER_WEBUI_DOM_DISTILLER_HANDLER_H_ #define COMPONENTS_DOM_DISTILLER_WEBUI_DOM_DISTILLER_HANDLER_H_ #include <string> #include "base/memory/weak_ptr.h" #include "base/values.h" #include "content/public/browser/web_ui_message_handler.h" namespace dom_distiller { class DomDistillerService; // Handler class for DOM Distiller list operations. class DomDistillerHandler : public content::WebUIMessageHandler { public: // The lifetime of |service| has to outlive this handler. DomDistillerHandler(DomDistillerService* service, const std::string& scheme); virtual ~DomDistillerHandler(); // content::WebUIMessageHandler implementation. virtual void RegisterMessages() OVERRIDE; // Callback from JavaScript for the "requestEntries" message. This // requests the list of entries and returns it to the front end by calling // "onReceivedEntries". There are no JavaScript arguments to this method. void HandleRequestEntries(const base::ListValue* args); // Callback from JavaScript for when an article should be added. The first // element in |args| should be a string representing the URL to be added. void HandleAddArticle(const base::ListValue* args); // Callback from JavaScript for when an article is selected. The first element // in |args| should be a string representing the ID of the entry to be // selected. void HandleSelectArticle(const base::ListValue* args); // Callback from JavaScript for when viewing a URL is requested. The first // element in |args| should be a string representing the URL to be viewed. void HandleViewUrl(const base::ListValue* args); private: // Callback from DomDistillerService when an article is available. void OnArticleAdded(bool article_available); // The DomDistillerService. DomDistillerService* service_; // The scheme for DOM distiller articles. std::string article_scheme_; // Factory for the creating refs in callbacks. base::WeakPtrFactory<DomDistillerHandler> weak_ptr_factory_; DISALLOW_COPY_AND_ASSIGN(DomDistillerHandler); }; } // namespace dom_distiller #endif // COMPONENTS_DOM_DISTILLER_WEBUI_DOM_DISTILLER_HANDLER_H_