1558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved. 25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// found in the LICENSE file. 45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 5558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#ifndef REMOTING_HOST_SETUP_SERVICE_CLIENT_H_ 6558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#define REMOTING_HOST_SETUP_SERVICE_CLIENT_H_ 75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <string> 95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "base/memory/ref_counted.h" 115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace net { 135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class URLRequestContextGetter; 145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} 155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)// A class that gives access to the Chromoting service. 175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)namespace remoting { 185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)class ServiceClient { 205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // TODO(simonmorris): Consider using a Callback instead of a delegate. 225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) class Delegate { 235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) public: 245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Invoked when a host has been registered. 253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) virtual void OnHostRegistered(const std::string& authorization_code) = 0; 265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Invoked when a host has been unregistered. 275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnHostUnregistered() = 0; 285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Invoked when there is an OAuth error. 295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnOAuthError() = 0; 305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Invoked when there is a network error or upon receiving an invalid 315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // response. 325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual void OnNetworkError(int response_code) = 0; 335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) protected: 355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) virtual ~Delegate() {} 365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) }; 372a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) ServiceClient(const std::string& chromoting_hosts_url, 382a99a7e74a7f215066514fe81d2bfa6639d9edddTorne (Richard Coles) net::URLRequestContextGetter* context_getter); 395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ~ServiceClient(); 405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Register a host. 425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void RegisterHost(const std::string& host_id, 435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& host_name, 445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& public_key, 453551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const std::string& host_client_id, 465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& oauth_access_token, 475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Delegate* delegate); 485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // Unregister a host. 495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) void UnregisterHost(const std::string& host_id, 505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) const std::string& oauth_access_token, 515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) Delegate* delegate); 525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) private: 545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) // The guts of the implementation live in this class. 555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) class Core; 565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) scoped_refptr<Core> core_; 575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(ServiceClient); 585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}; 595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} // namespace remoting 615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) 62558790d6acca3451cf3a6b497803a5f07d0bec58Ben Murdoch#endif // REMOTING_HOST_SETUP_SERVICE_CLIENT_H_ 63