1// Copyright 2013 The Chromium Authors. All rights reserved.
2// Use of this source code is governed by a BSD-style license that can be
3// found in the LICENSE file.
4
5#ifndef CHROME_BROWSER_LOCAL_DISCOVERY_PRIVET_CONFIRM_API_FLOW_H_
6#define CHROME_BROWSER_LOCAL_DISCOVERY_PRIVET_CONFIRM_API_FLOW_H_
7
8#include <string>
9
10#include "chrome/browser/local_discovery/cloud_print_base_api_flow.h"
11#include "net/url_request/url_request_context_getter.h"
12
13
14namespace local_discovery {
15
16// API call flow for server-side communication with cloudprint for registration.
17class PrivetConfirmApiCallFlow : public CloudPrintBaseApiFlow::Delegate {
18 public:
19  typedef base::Callback<void(CloudPrintBaseApiFlow::Status /*success*/)>
20      ResponseCallback;
21
22  // Create an OAuth2-based confirmation
23  PrivetConfirmApiCallFlow(net::URLRequestContextGetter* request_context,
24                           OAuth2TokenService* token_service_,
25                           const std::string& account_id,
26                           const GURL& automated_claim_url,
27                           const ResponseCallback& callback);
28
29  // Create a cookie-based confirmation
30  PrivetConfirmApiCallFlow(net::URLRequestContextGetter* request_context,
31                           int  user_index,
32                           const std::string& xsrf_token,
33                           const GURL& automated_claim_url,
34                           const ResponseCallback& callback);
35
36  virtual ~PrivetConfirmApiCallFlow();
37
38  void Start();
39
40  virtual void OnCloudPrintAPIFlowError(
41      CloudPrintBaseApiFlow* flow,
42      CloudPrintBaseApiFlow::Status status) OVERRIDE;
43  virtual void OnCloudPrintAPIFlowComplete(
44      CloudPrintBaseApiFlow* flow,
45      const base::DictionaryValue* value) OVERRIDE;
46
47  CloudPrintBaseApiFlow* GetBaseApiFlowForTests() {
48    return &flow_;
49  }
50
51 private:
52  CloudPrintBaseApiFlow flow_;
53  ResponseCallback callback_;
54};
55
56}  // namespace local_discovery
57
58#endif  // CHROME_BROWSER_LOCAL_DISCOVERY_PRIVET_CONFIRM_API_FLOW_H_
59