Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(29)

Side by Side Diff: chrome/browser/sync/glue/synced_tab_delegate_unittest.cc

Issue 1408643002: [Sync] Componentize synced_tab_delegate (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Fix test broken by rebase Created 5 years, 1 month ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
(Empty)
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 "chrome/browser/sync/glue/synced_tab_delegate.h"
6
7 #include "base/memory/scoped_ptr.h"
8 #include "components/sync_driver/glue/synced_window_delegate.h"
9 #include "content/public/browser/navigation_entry.h"
10 #include "testing/gtest/include/gtest/gtest.h"
11
12 namespace browser_sync {
13
14 namespace {
15
16 class FakeSyncedWindowDelegate : public SyncedWindowDelegate {
17 public:
18 bool HasWindow() const override { return false; }
19 SessionID::id_type GetSessionId() const override { return 0; }
20 int GetTabCount() const override { return 0; }
21 int GetActiveIndex() const override { return 0; }
22 bool IsApp() const override { return false; }
23 bool IsTypeTabbed() const override { return false; }
24 bool IsTypePopup() const override { return false; }
25 bool IsTabPinned(const SyncedTabDelegate* tab) const override {
26 return false;
27 }
28 SyncedTabDelegate* GetTabAt(int index) const override { return NULL; }
29 SessionID::id_type GetTabIdAt(int index) const override { return 0; }
30 bool IsSessionRestoreInProgress() const override { return false;}
31 bool ShouldSync() const override { return false; }
32 };
33
34 class FakeSyncedTabDelegate : public SyncedTabDelegate {
35 public:
36 FakeSyncedTabDelegate() :
37 pending_index_(-1),
38 current_index_(0),
39 pending_entry_(NULL),
40 window_(new FakeSyncedWindowDelegate()) {}
41
42 SessionID::id_type GetWindowId() const override { return 0; }
43 SessionID::id_type GetSessionId() const override { return 0; }
44 bool IsBeingDestroyed() const override { return false; }
45 Profile* profile() const override { return NULL; }
46 std::string GetExtensionAppId() const override { return ""; }
47 bool IsInitialBlankNavigation() const override {
48 // This differs from NavigationControllerImpl, which has an initial blank
49 // NavigationEntry.
50 return GetEntryCount() == 0;
51 }
52 int GetCurrentEntryIndex() const override { return current_index_; }
53 int GetEntryCount() const override { return indexed_entries_.size(); }
54 int GetPendingEntryIndex() const override { return pending_index_; }
55 content::NavigationEntry* GetPendingEntry() const override {
56 return pending_entry_;
57 }
58 content::NavigationEntry* GetEntryAtIndex(int i) const override {
59 return indexed_entries_[i];
60 }
61 content::NavigationEntry* GetActiveEntry() const override { return NULL; }
62 bool ProfileIsSupervised() const override { return false; }
63 const std::vector<const content::NavigationEntry*>*
64 GetBlockedNavigations() const override { return NULL; }
65 bool IsPinned() const override { return false;}
66 bool HasWebContents() const override { return false;}
67 content::WebContents* GetWebContents() const override { return NULL;}
68 int GetSyncId() const override { return 0; }
69 void SetSyncId(int sync_id) override {}
70 const SyncedWindowDelegate* GetSyncedWindowDelegate() const override {
71 return window_.get();
72 }
73
74 void SetCurrentEntryIndex(int i) {
75 current_index_ = i;
76 }
77
78 void SetPendingEntryIndex(int i) {
79 pending_index_ = i;
80 }
81
82 void SetPendingEntry(content::NavigationEntry* entry) {
83 pending_entry_ = entry;
84 }
85
86 void AppendIndexedEntry(content::NavigationEntry* entry) {
87 indexed_entries_.push_back(entry);
88 }
89
90 private:
91 int pending_index_;
92 int current_index_;
93 content::NavigationEntry* pending_entry_;
94 std::vector<content::NavigationEntry*> indexed_entries_;
95 const scoped_ptr<FakeSyncedWindowDelegate> window_;
96 };
97
98 class SyncedTabDelegateTest : public testing::Test {
99 public:
100 SyncedTabDelegateTest() : tab_(),
101 entry_(content::NavigationEntry::Create()) {}
102
103 protected:
104 FakeSyncedTabDelegate tab_;
105 const scoped_ptr<content::NavigationEntry> entry_;
106 };
107
108 } // namespace
109
110 TEST_F(SyncedTabDelegateTest, GetEntryCurrentIsPending) {
111 tab_.SetPendingEntryIndex(1);
112 tab_.SetCurrentEntryIndex(1);
113
114 tab_.SetPendingEntry(entry_.get());
115
116 EXPECT_EQ(entry_.get(), tab_.GetCurrentEntryMaybePending());
117 EXPECT_EQ(entry_.get(), tab_.GetEntryAtIndexMaybePending(1));
118 }
119
120 TEST_F(SyncedTabDelegateTest, GetEntryCurrentNotPending) {
121 tab_.SetPendingEntryIndex(1);
122 tab_.SetCurrentEntryIndex(0);
123
124 tab_.AppendIndexedEntry(entry_.get());
125
126 EXPECT_EQ(entry_.get(), tab_.GetCurrentEntryMaybePending());
127 EXPECT_EQ(entry_.get(), tab_.GetEntryAtIndexMaybePending(0));
128 }
129
130 TEST_F(SyncedTabDelegateTest, ShouldSyncNoEntries) {
131 EXPECT_FALSE(tab_.ShouldSync());
132 }
133
134 TEST_F(SyncedTabDelegateTest, ShouldSyncNullEntry) {
135 entry_->SetURL(GURL("http://www.google.com"));
136 tab_.AppendIndexedEntry(entry_.get());
137 tab_.AppendIndexedEntry(NULL);
138
139 EXPECT_FALSE(tab_.ShouldSync());
140 }
141
142 TEST_F(SyncedTabDelegateTest, ShouldSyncFile) {
143 entry_->SetURL(GURL("file://path"));
144 tab_.AppendIndexedEntry(entry_.get());
145
146 EXPECT_FALSE(tab_.ShouldSync());
147 }
148
149 TEST_F(SyncedTabDelegateTest, ShouldSyncChrome) {
150 entry_->SetURL(GURL("chrome://preferences/"));
151 tab_.AppendIndexedEntry(entry_.get());
152
153 EXPECT_FALSE(tab_.ShouldSync());
154 }
155
156 TEST_F(SyncedTabDelegateTest, ShouldSyncHistory) {
157 entry_->SetURL(GURL("chrome://history/"));
158 tab_.AppendIndexedEntry(entry_.get());
159
160 EXPECT_TRUE(tab_.ShouldSync());
161 }
162
163 TEST_F(SyncedTabDelegateTest, ShouldSyncValid) {
164 entry_->SetURL(GURL("http://www.google.com"));
165 tab_.AppendIndexedEntry(entry_.get());
166
167 EXPECT_TRUE(tab_.ShouldSync());
168 }
169
170 TEST_F(SyncedTabDelegateTest, ShouldSyncMultiple) {
171 entry_->SetURL(GURL("file://path"));
172 tab_.AppendIndexedEntry(entry_.get());
173
174 scoped_ptr<content::NavigationEntry>
175 entry2(content::NavigationEntry::Create());
176 entry2->SetURL(GURL("chrome://preferences/"));
177 tab_.AppendIndexedEntry(entry2.get());
178
179 // As long as they're all invalid, expect false.
180 EXPECT_FALSE(tab_.ShouldSync());
181
182 scoped_ptr<content::NavigationEntry>
183 entry3(content::NavigationEntry::Create());
184 entry3->SetURL(GURL("http://www.google.com"));
185 tab_.AppendIndexedEntry(entry3.get());
186
187 // With one valid, expect true.
188 EXPECT_TRUE(tab_.ShouldSync());
189 }
190
191 } // namespace browser_sync
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698