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

Side by Side Diff: chrome/browser/extensions/api/tabs/tabs_api_unittest.cc

Issue 2067033002: Discarded property on chrome.tabs.Tab and chrome.tabs.query() (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: browsertest to unittest Created 4 years, 5 months 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
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "base/strings/utf_string_conversions.h" 5 #include "base/strings/utf_string_conversions.h"
6 #include "chrome/browser/browser_process.h"
6 #include "chrome/browser/extensions/api/tabs/tabs_api.h" 7 #include "chrome/browser/extensions/api/tabs/tabs_api.h"
7 #include "chrome/browser/extensions/extension_function_test_utils.h" 8 #include "chrome/browser/extensions/extension_function_test_utils.h"
8 #include "chrome/browser/extensions/extension_service_test_base.h" 9 #include "chrome/browser/extensions/extension_service_test_base.h"
9 #include "chrome/browser/extensions/extension_tab_util.h" 10 #include "chrome/browser/extensions/extension_tab_util.h"
11 #include "chrome/browser/memory/tab_manager.h"
10 #include "chrome/browser/ui/browser.h" 12 #include "chrome/browser/ui/browser.h"
11 #include "chrome/browser/ui/tabs/tab_strip_model.h" 13 #include "chrome/browser/ui/tabs/tab_strip_model.h"
12 #include "chrome/test/base/test_browser_window.h" 14 #include "chrome/test/base/test_browser_window.h"
13 #include "content/public/browser/navigation_entry.h" 15 #include "content/public/browser/navigation_entry.h"
14 #include "content/public/test/web_contents_tester.h" 16 #include "content/public/test/web_contents_tester.h"
15 #include "extensions/common/extension_builder.h" 17 #include "extensions/common/extension_builder.h"
16 #include "extensions/common/test_util.h" 18 #include "extensions/common/test_util.h"
17 19
20 using memory::TabManager;
21 using content::WebContents;
22
18 namespace extensions { 23 namespace extensions {
19 24
25 namespace utils = extension_function_test_utils;
26
20 namespace { 27 namespace {
21 28
22 std::unique_ptr<base::ListValue> RunTabsQueryFunction( 29 std::unique_ptr<base::ListValue> RunTabsQueryFunction(
23 Browser* browser, 30 Browser* browser,
24 const Extension* extension, 31 const Extension* extension,
25 const std::string& query_info) { 32 const std::string& query_info) {
26 scoped_refptr<TabsQueryFunction> function(new TabsQueryFunction()); 33 scoped_refptr<TabsQueryFunction> function(new TabsQueryFunction());
27 function->set_extension(extension); 34 function->set_extension(extension);
28 std::unique_ptr<base::Value> value( 35 std::unique_ptr<base::Value> value(
29 extension_function_test_utils::RunFunctionAndReturnSingleResult( 36 extension_function_test_utils::RunFunctionAndReturnSingleResult(
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after
202 int first_tab_id = -1; 209 int first_tab_id = -1;
203 ASSERT_TRUE(first_tab_info->GetInteger("id", &first_tab_id)); 210 ASSERT_TRUE(first_tab_info->GetInteger("id", &first_tab_id));
204 EXPECT_TRUE(ContainsValue(expected_tabs_ids, first_tab_id)); 211 EXPECT_TRUE(ContainsValue(expected_tabs_ids, first_tab_id));
205 212
206 int third_tab_id = -1; 213 int third_tab_id = -1;
207 ASSERT_TRUE(third_tab_info->GetInteger("id", &third_tab_id)); 214 ASSERT_TRUE(third_tab_info->GetInteger("id", &third_tab_id));
208 EXPECT_TRUE(ContainsValue(expected_tabs_ids, third_tab_id)); 215 EXPECT_TRUE(ContainsValue(expected_tabs_ids, third_tab_id));
209 } 216 }
210 } 217 }
211 218
219 TEST_F(TabsApiUnitTest, QueryDiscarded) {
Devlin 2016/07/11 16:32:28 It doesn't look like this test has been formatted
Anderson Silva 2016/07/11 19:47:51 Done.
220 ASSERT_TRUE(g_browser_process && g_browser_process->GetTabManager());
221 memory::TabManager* tab_manager = g_browser_process->GetTabManager();
222
223 // Create three tabs.
224 content::OpenURLParams params_1(GURL(url::kAboutBlankURL),
Devlin 2016/07/11 16:32:28 optional nit: I'd also probably just inline these,
Anderson Silva 2016/07/11 19:47:51 Acknowledged.
225 content::Referrer(), NEW_BACKGROUND_TAB,
226 ui::PAGE_TRANSITION_LINK, false);
227 content::OpenURLParams params_2(GURL(url::kAboutBlankURL),
228 content::Referrer(), NEW_FOREGROUND_TAB,
229 ui::PAGE_TRANSITION_LINK, false);
230 content::WebContents* web_contents_a = browser()->OpenURL(params_1);
231 content::WebContents* web_contents_b = browser()->OpenURL(params_1);
232 browser()->OpenURL(params_2);
233
234 // Get non-discarded tabs.
235 {
236 const char* kQueryInfo = "[{\"discarded\": false}]";
237 scoped_refptr<TabsQueryFunction> function = new TabsQueryFunction();
238 function->set_extension(test_util::CreateEmptyExtension().get());
239 std::unique_ptr<base::ListValue> result(
240 utils::ToList(utils::RunFunctionAndReturnSingleResult(
241 function.get(), kQueryInfo, browser())));
242
243 EXPECT_EQ(3u, result.get()->GetSize());
Devlin 2016/07/11 16:32:28 unique_ptr::operator-> forwards to the underlying
Anderson Silva 2016/07/11 19:47:51 Done.
244 }
245
246 // Get discarded tabs.
247 {
248 const char* kQueryInfo = "[{\"discarded\": true}]";
249 scoped_refptr<TabsQueryFunction> function = new TabsQueryFunction();
250 function->set_extension(test_util::CreateEmptyExtension().get());
251 std::unique_ptr<base::ListValue> result(
252 utils::ToList(utils::RunFunctionAndReturnSingleResult(
253 function.get(), kQueryInfo, browser())));
254
255 EXPECT_EQ(0u, result.get()->GetSize());
256 }
257
258 // Discards one tab.
259 EXPECT_TRUE(
260 tab_manager->DiscardTabById(reinterpret_cast<int64_t>(web_contents_a)));
261
262 // Get non-discarded tabs after discarding one tab.
263 {
264 const char* kQueryInfo = "[{\"discarded\": false}]";
265 scoped_refptr<TabsQueryFunction> function = new TabsQueryFunction();
266 function->set_extension(test_util::CreateEmptyExtension().get());
267 std::unique_ptr<base::ListValue> result(
268 utils::ToList(utils::RunFunctionAndReturnSingleResult(
269 function.get(), kQueryInfo, browser())));
270
271 EXPECT_EQ(2u, result.get()->GetSize());
Devlin 2016/07/11 16:32:28 It might be worth checking that the tabs you get a
Anderson Silva 2016/07/11 19:47:51 Done. Checked in 2 results.
272 }
273
274 // Get discarded tabs after discarding one tab.
275 {
276 const char* kQueryInfo = "[{\"discarded\": true}]";
277 scoped_refptr<TabsQueryFunction> function = new TabsQueryFunction();
278 function->set_extension(test_util::CreateEmptyExtension().get());
279 std::unique_ptr<base::ListValue> result(
280 utils::ToList(utils::RunFunctionAndReturnSingleResult(
281 function.get(), kQueryInfo, browser())));
282
283 EXPECT_EQ(1u, result.get()->GetSize());
284 }
285
286 // Discards the other created tab.
287 EXPECT_TRUE(
288 tab_manager->DiscardTabById(reinterpret_cast<int64_t>(web_contents_b)));
289
290 // Get non-discarded tabs after discarding two created tabs.
291 {
292 const char* kQueryInfo = "[{\"discarded\": false}]";
293 scoped_refptr<TabsQueryFunction> function = new TabsQueryFunction();
294 function->set_extension(test_util::CreateEmptyExtension().get());
295 std::unique_ptr<base::ListValue> result(
296 utils::ToList(utils::RunFunctionAndReturnSingleResult(
297 function.get(), kQueryInfo, browser())));
298
299 EXPECT_EQ(1u, result.get()->GetSize());
300 }
301
302 // Get discarded tabs after discarding two created tabs.
303 {
304 const char* kQueryInfo = "[{\"discarded\": true}]";
305 scoped_refptr<TabsQueryFunction> function = new TabsQueryFunction();
306 function->set_extension(test_util::CreateEmptyExtension().get());
307 std::unique_ptr<base::ListValue> result(
308 utils::ToList(utils::RunFunctionAndReturnSingleResult(
309 function.get(), kQueryInfo, browser())));
310
311 EXPECT_EQ(2u, result.get()->GetSize());
312 }
313
314 auto tsm = browser()->tab_strip_model();
Devlin 2016/07/11 16:32:28 style guide says to avoid using abbreviation like
Anderson Silva 2016/07/11 19:47:51 Done.
315 tsm->ActivateTabAt(0, false);
316
317 // Get non-discarded tabs after activating a discarded tab.
318 {
319 const char* kQueryInfo = "[{\"discarded\": false}]";
320 scoped_refptr<TabsQueryFunction> function = new TabsQueryFunction();
321 function->set_extension(test_util::CreateEmptyExtension().get());
322 std::unique_ptr<base::ListValue> result(
323 utils::ToList(utils::RunFunctionAndReturnSingleResult(
324 function.get(), kQueryInfo, browser())));
325
326 EXPECT_EQ(2u, result.get()->GetSize());
327 }
328
329 // Get discarded tabs after activating a discarded tab.
330 {
331 const char* kQueryInfo = "[{\"discarded\": true}]";
332 scoped_refptr<TabsQueryFunction> function = new TabsQueryFunction();
333 function->set_extension(test_util::CreateEmptyExtension().get());
334 std::unique_ptr<base::ListValue> result(
335 utils::ToList(utils::RunFunctionAndReturnSingleResult(
336 function.get(), kQueryInfo, browser())));
337
338 EXPECT_EQ(1u, result.get()->GetSize());
339 }
340
341 browser()->tab_strip_model()->CloseAllTabs();
Devlin 2016/07/11 16:32:28 Is this necessary?
Anderson Silva 2016/07/11 19:47:51 Yes. Otherwise we crash at tear down.
Anderson Silva 2016/07/11 19:50:52 Yes. Because there's a check to make sure that Tab
342 }
343
212 } // namespace extensions 344 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/api/tabs/tabs_api.cc ('k') | chrome/browser/extensions/extension_tab_util.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698