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 CHROME_BROWSER_EXTENSIONS_API_SESSIONS_SESSION_ID_H__ 63551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#define CHROME_BROWSER_EXTENSIONS_API_SESSIONS_SESSION_ID_H__ 73551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 83551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include <string> 93551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 103551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "base/basictypes.h" 113551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#include "base/memory/scoped_ptr.h" 123551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 133551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)namespace extensions { 143551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 153551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)class SessionId { 163551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) public: 173551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Returns a SessionId, representing either a local or a foreign session. 183551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // In the case that the session is local, |session_tag_| will be empty string. 193551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // |session_string| should be in the format that ToString() would produce. 203551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) static scoped_ptr<SessionId> Parse(const std::string& session_string); 213551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 223551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Constructs a SessionId object for the given session information. 233551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // |session_tag| is the string used to uniquely identify a synced foreign 243551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // session from the SessionModelAssociator. In the case that SessionId 253551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // represents a local session, |session_tag_| will be the empty string. |id| 263551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // uniquely identifies either a window or tab object in the local or the 273551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // |session_tag| session. 283551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) SessionId(const std::string& session_tag, int id); 293551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 303551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Returns true if the SessionId represents a foreign session. 313551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) bool IsForeign() const; 323551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 333551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // Returns the compressed std::string representation of a SessionId in the 343551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // same format that Parse() accepts as its |session_string| parameter. 353551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) std::string ToString() const; 363551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 373551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) const std::string& session_tag() const { return session_tag_; } 383551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) int id() const { return id_; } 393551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 403551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) private: 413551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // The unique identifier for a foreign session, given by the 423551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // SessionModelAssociator. 433551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) std::string session_tag_; 443551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 453551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) // ID corresponding to a window or tab object. 463551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) int id_; 473551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 483551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) DISALLOW_COPY_AND_ASSIGN(SessionId); 493551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)}; 503551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 513551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)} // namespace extensions 523551c9c881056c480085172ff9840cab31610854Torne (Richard Coles) 533551c9c881056c480085172ff9840cab31610854Torne (Richard Coles)#endif // CHROME_BROWSER_EXTENSIONS_API_SESSIONS_SESSION_ID_H__ 54