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