privet_confirm_api_flow.h revision 0529e5d033099cbfc42635f6f6183833b09dff6e
1a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch// Copyright 2013 The Chromium Authors. All rights reserved.
2a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch// Use of this source code is governed by a BSD-style license that can be
3a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch// found in the LICENSE file.
4a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch
5a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch#ifndef CHROME_BROWSER_LOCAL_DISCOVERY_PRIVET_CONFIRM_API_FLOW_H_
6a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch#define CHROME_BROWSER_LOCAL_DISCOVERY_PRIVET_CONFIRM_API_FLOW_H_
7a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch
8a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch#include <string>
9a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch
100529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch#include "chrome/browser/local_discovery/gcd_base_api_flow.h"
11a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch#include "net/url_request/url_request_context_getter.h"
12a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch
1358537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)
14a3f7b4e666c476898878fa745f637129375cd889Ben Murdochnamespace local_discovery {
15a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch
16a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch// API call flow for server-side communication with cloudprint for registration.
170529e5d033099cbfc42635f6f6183833b09dff6eBen Murdochclass PrivetConfirmApiCallFlow : public GCDBaseApiFlow::Delegate {
18a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch public:
190529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  typedef base::Callback<void(GCDBaseApiFlow::Status /*success*/)>
2058537e28ecd584eab876aee8be7156509866d23aTorne (Richard Coles)      ResponseCallback;
21a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch
22424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)  // Create an OAuth2-based confirmation
23a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch  PrivetConfirmApiCallFlow(net::URLRequestContextGetter* request_context,
24a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch                           OAuth2TokenService* token_service_,
2568043e1e95eeb07d5cae7aca370b26518b0867d6Torne (Richard Coles)                           const std::string& account_id,
260529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch                           bool is_cloud_print,
270529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch                           const std::string& token,
28424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)                           const ResponseCallback& callback);
29424c4d7b64af9d0d8fd9624f381f469654d5e3d2Torne (Richard Coles)
30a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch  virtual ~PrivetConfirmApiCallFlow();
31a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch
32a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch  void Start();
33a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch
340529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  virtual void OnGCDAPIFlowError(GCDBaseApiFlow* flow,
350529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch                                 GCDBaseApiFlow::Status status) OVERRIDE;
360529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  virtual void OnGCDAPIFlowComplete(GCDBaseApiFlow* flow,
370529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch                                    const base::DictionaryValue* value)
380529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch      OVERRIDE;
390529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  virtual bool GCDIsCloudPrint() OVERRIDE;
400529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  virtual net::URLFetcher::RequestType GetRequestType() OVERRIDE;
410529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  virtual void GetUploadData(std::string* upload_type,
420529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch                             std::string* upload_data) OVERRIDE;
43a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch
440529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  GCDBaseApiFlow* GetBaseApiFlowForTests() { return &flow_; }
45a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch
46a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch private:
470529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  bool is_cloud_print_;
480529e5d033099cbfc42635f6f6183833b09dff6eBen Murdoch  GCDBaseApiFlow flow_;
49a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch  ResponseCallback callback_;
50a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch};
51a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch
52a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch}  // namespace local_discovery
53a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch
54a3f7b4e666c476898878fa745f637129375cd889Ben Murdoch#endif  // CHROME_BROWSER_LOCAL_DISCOVERY_PRIVET_CONFIRM_API_FLOW_H_
55