13551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved.
23551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be
33551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)// found in the LICENSE file.
43551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
53551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#ifndef CLOUD_PRINT_GCP20_PROTOTYPE_PRINTER_STATE_H_
63551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#define CLOUD_PRINT_GCP20_PROTOTYPE_PRINTER_STATE_H_
73551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
83551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include <string>
93551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
10f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)#include "base/memory/linked_ptr.h"
113551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "base/time/time.h"
123551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "cloud_print/gcp20/prototype/local_settings.h"
133551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
143551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)namespace base {
15f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)class DictionaryValue;
163551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)class FilePath;
173551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)}  // namespace base
183551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
193551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)struct PrinterState {
203551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  enum RegistrationState {
213551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    UNREGISTERED,
223551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    REGISTRATION_STARTED,  // |action=start| was called,
233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)                           // request to CloudPrint was sent.
243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    REGISTRATION_CLAIM_TOKEN_READY,  // The same as previous, but request
253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)                                     // reply is already received.
263551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    REGISTRATION_COMPLETING,  // |action=complete| was called,
273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)                              // |complete| request was sent.
283551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    REGISTRATION_ERROR,  // Is set when server error was occurred.
293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    REGISTERED,
303551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  };
313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  enum ConfirmationState {
333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    CONFIRMATION_PENDING,
343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    CONFIRMATION_CONFIRMED,
353551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    CONFIRMATION_DISCARDED,
363551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)    CONFIRMATION_TIMEOUT,
373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  };
383551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
393551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  PrinterState();
403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  ~PrinterState();
413551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // Registration process info
433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  std::string user;
443551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  std::string registration_token;
453551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  std::string complete_invite_url;
463551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  RegistrationState registration_state;
473551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  ConfirmationState confirmation_state;
483551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // Printer workflow info
503551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  std::string refresh_token;
513551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  std::string device_id;
523551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  std::string xmpp_jid;
533551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  LocalSettings local_settings;
54f2477e01787aa58f445919b809d89e252beef54fTorne (Richard Coles)  linked_ptr<base::DictionaryValue> cdd;
553551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
563551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // Last valid |access_token|.
573551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  std::string access_token;
583551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  base::Time access_token_update;
593551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
603551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  // Contains error if |REGISTRATION_ERROR| is set.
613551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)  std::string error_description;
623551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)};
633551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
643551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)namespace printer_state {
653551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
663551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)//
673551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)bool SaveToFile(const base::FilePath& path, const PrinterState& state);
683551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
693551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)//
703551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)bool LoadFromFile(const base::FilePath& path, PrinterState* state);
713551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
723551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)}  // namespace printer_state
733551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
743551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#endif  // CLOUD_PRINT_GCP20_PROTOTYPE_PRINTER_STATE_H_
753551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)
76