1 // Copyright 2015 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 #include "components/sync/test/fake_server/sessions_hierarchy.h"
6 
7 #include <sstream>
8 
9 namespace fake_server {
10 
SessionsHierarchy()11 SessionsHierarchy::SessionsHierarchy() {}
12 
13 SessionsHierarchy::SessionsHierarchy(const SessionsHierarchy& other) = default;
14 
SessionsHierarchy(std::initializer_list<std::multiset<std::string>> windows)15 SessionsHierarchy::SessionsHierarchy(
16     std::initializer_list<std::multiset<std::string>> windows)
17     : windows_(windows) {}
18 
~SessionsHierarchy()19 SessionsHierarchy::~SessionsHierarchy() {}
20 
AddWindow(const std::string & tab)21 void SessionsHierarchy::AddWindow(const std::string& tab) {
22   windows_.insert({tab});
23 }
24 
AddWindow(const std::multiset<std::string> & tabs)25 void SessionsHierarchy::AddWindow(const std::multiset<std::string>& tabs) {
26   windows_.insert(tabs);
27 }
28 
ToString() const29 std::string SessionsHierarchy::ToString() const {
30   std::stringstream output;
31   output << "{";
32   for (auto window_it = windows_.begin(); window_it != windows_.end();
33        ++window_it) {
34     if (window_it != windows_.begin())
35       output << ",";
36     output << "{";
37 
38     Window window = *window_it;
39     for (auto tab_it = window.begin(); tab_it != window.end(); ++tab_it) {
40       if (tab_it != window.begin())
41         output << ",";
42       output << *tab_it;
43     }
44     output << "}";
45   }
46   output << "}";
47   return output.str();
48 }
49 
Equals(const SessionsHierarchy & other) const50 bool SessionsHierarchy::Equals(const SessionsHierarchy& other) const {
51   return windows_ == other.windows_;
52 }
53 
54 }  // namespace fake_server
55