158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)// found in the LICENSE file.
458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#ifndef REMOTING_HOST_SETUP_DAEMON_CONTROLLER_DELEGATE_MAC_H_
658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#define REMOTING_HOST_SETUP_DAEMON_CONTROLLER_DELEGATE_MAC_H_
758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "base/memory/ref_counted.h"
958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "base/memory/scoped_ptr.h"
1058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#include "remoting/host/setup/daemon_controller.h"
1158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
1258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)namespace remoting {
1358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
1458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)class DaemonControllerDelegateMac : public DaemonController::Delegate {
1558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) public:
1658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  DaemonControllerDelegateMac();
1758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual ~DaemonControllerDelegateMac();
1858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
1958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  // DaemonController::Delegate interface.
2058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual DaemonController::State GetState() OVERRIDE;
2158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual scoped_ptr<base::DictionaryValue> GetConfig() OVERRIDE;
22a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch  virtual void InstallHost(
23a02191e04bc25c4935f804f2c080ae28663d096dBen Murdoch      const DaemonController::CompletionCallback& done) OVERRIDE;
2458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual void SetConfigAndStart(
2558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      scoped_ptr<base::DictionaryValue> config,
2658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      bool consent,
2758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      const DaemonController::CompletionCallback& done) OVERRIDE;
2858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual void UpdateConfig(
2958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      scoped_ptr<base::DictionaryValue> config,
3058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      const DaemonController::CompletionCallback& done) OVERRIDE;
3158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual void Stop(const DaemonController::CompletionCallback& done) OVERRIDE;
3258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual void SetWindow(void* window_handle) OVERRIDE;
3358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual std::string GetVersion() OVERRIDE;
3458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  virtual DaemonController::UsageStatsConsent GetUsageStatsConsent() OVERRIDE;
3558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
3658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles) private:
3758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  void ShowPreferencePane(const std::string& config_data,
3858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)                          const DaemonController::CompletionCallback& done);
3958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  void RegisterForPreferencePaneNotifications(
4058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      const DaemonController::CompletionCallback &done);
4158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  void DeregisterForPreferencePaneNotifications();
4258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  void PreferencePaneCallbackDelegate(CFStringRef name);
4358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
4458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  static bool DoShowPreferencePane(const std::string& config_data);
4558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  static void PreferencePaneCallback(CFNotificationCenterRef center,
4658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)                                     void* observer,
4758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)                                     CFStringRef name,
4858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)                                     const void* object,
4958537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)                                     CFDictionaryRef user_info);
5058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
5158537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  DaemonController::CompletionCallback current_callback_;
5258537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
5358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)  DISALLOW_COPY_AND_ASSIGN(DaemonControllerDelegateMac);
5458537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)};
5558537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
5658537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)}  // namespace remoting
5758537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
5858537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)#endif  // REMOTING_HOST_SETUP_DAEMON_CONTROLLER_DELEGATE_MAC_H_
59