privet_confirm_api_flow.h revision 58537e28ecd584eab876aee8be7156509866d23a
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 GURL& automated_claim_url,
26                           const ResponseCallback& callback);
27
28  // Create a cookie-based confirmation
29  PrivetConfirmApiCallFlow(net::URLRequestContextGetter* request_context,
30                           int  user_index,
31                           const std::string& xsrf_token,
32                           const GURL& automated_claim_url,
33                           const ResponseCallback& callback);
34
35  virtual ~PrivetConfirmApiCallFlow();
36
37  void Start();
38
39  virtual void OnCloudPrintAPIFlowError(
40      CloudPrintBaseApiFlow* flow,
41      CloudPrintBaseApiFlow::Status status) OVERRIDE;
42  virtual void OnCloudPrintAPIFlowComplete(
43      CloudPrintBaseApiFlow* flow,
44      const base::DictionaryValue* value) OVERRIDE;
45
46  CloudPrintBaseApiFlow* GetBaseApiFlowForTests() {
47    return &flow_;
48  }
49
50 private:
51  CloudPrintBaseApiFlow flow_;
52  ResponseCallback callback_;
53};
54
55}  // namespace local_discovery
56
57#endif  // CHROME_BROWSER_LOCAL_DISCOVERY_PRIVET_CONFIRM_API_FLOW_H_
58