17d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
27d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
37d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// found in the LICENSE file.
47d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
57d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#ifndef CHROME_BROWSER_UI_WEBUI_SYNC_FILE_SYSTEM_INTERNALS_EXTENSION_STATUSES_HANDLER_H_
67d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#define CHROME_BROWSER_UI_WEBUI_SYNC_FILE_SYSTEM_INTERNALS_EXTENSION_STATUSES_HANDLER_H_
77d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
87d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "base/compiler_specific.h"
9cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)#include "base/memory/weak_ptr.h"
107d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#include "content/public/browser/web_ui_message_handler.h"
117d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
127d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)class Profile;
137d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
147d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)namespace syncfs_internals {
157d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
167d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// This class handles message from WebUI page of chrome://syncfs-internals/
177d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// for the Extension Statuses tab. It corresponds to browser/resources/
187d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// sync_file_system_internals/extension_statuses.html. All methods in this class
197d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)// should be called on UI thread.
207d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)class ExtensionStatusesHandler : public content::WebUIMessageHandler {
217d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) public:
227d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  explicit ExtensionStatusesHandler(Profile* profile);
237d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  virtual ~ExtensionStatusesHandler();
247d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
25eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // Shared by Extension Statuses Tab and also File Metadata Tab to generate the
26eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch  // extension drop down.
27cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  static void GetExtensionStatusesAsDictionary(
28cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      Profile* profile,
29cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)      const base::Callback<void(const base::ListValue&)>& callback);
30eb525c5499e34cc9c4b825d6d9e75bb07cc06aceBen Murdoch
317d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  // WebUIMessageHandler implementation.
327d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  virtual void RegisterMessages() OVERRIDE;
337d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
347d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles) private:
357d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  void GetExtensionStatuses(const base::ListValue* args);
36cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  void DidGetExtensionStatuses(const base::ListValue& list);
377d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
387d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  Profile* profile_;
39cedac228d2dd51db4b79ea1e72c7f249408ee061Torne (Richard Coles)  base::WeakPtrFactory<ExtensionStatusesHandler> weak_ptr_factory_;
407d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
417d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(ExtensionStatusesHandler);
427d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)};
437d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
447d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)}  // namespace syncfs_internals
457d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)
467d4cd473f85ac64c3747c96c277f9e506a0d2246Torne (Richard Coles)#endif  // CHROME_BROWSER_UI_WEBUI_SYNC_FILE_SYSTEM_INTERNALS_EXTENSION_STATUSES_HANDLER_H_
47