| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 | 5 |
| 6 #include <string> | 6 #include <string> |
| 7 | 7 |
| 8 #include "base/memory/ref_counted.h" | 8 #include "base/memory/ref_counted.h" |
| 9 #include "base/memory/scoped_ptr.h" | 9 #include "base/memory/scoped_ptr.h" |
| 10 #include "base/prefs/pref_service.h" | 10 #include "base/prefs/pref_service.h" |
| 11 #include "base/strings/pattern.h" |
| 12 #include "base/strings/string_split.h" |
| 11 #include "base/strings/string_util.h" | 13 #include "base/strings/string_util.h" |
| 12 #include "base/strings/stringprintf.h" | 14 #include "base/strings/stringprintf.h" |
| 13 #include "base/values.h" | 15 #include "base/values.h" |
| 14 #include "chrome/browser/devtools/devtools_window_testing.h" | 16 #include "chrome/browser/devtools/devtools_window_testing.h" |
| 15 #include "chrome/browser/extensions/api/tabs/tabs_api.h" | 17 #include "chrome/browser/extensions/api/tabs/tabs_api.h" |
| 16 #include "chrome/browser/extensions/api/tabs/tabs_constants.h" | 18 #include "chrome/browser/extensions/api/tabs/tabs_constants.h" |
| 17 #include "chrome/browser/extensions/extension_function_test_utils.h" | 19 #include "chrome/browser/extensions/extension_function_test_utils.h" |
| 18 #include "chrome/browser/extensions/extension_tab_util.h" | 20 #include "chrome/browser/extensions/extension_tab_util.h" |
| 19 #include "chrome/browser/prefs/incognito_mode_prefs.h" | 21 #include "chrome/browser/prefs/incognito_mode_prefs.h" |
| 20 #include "chrome/browser/profiles/profile.h" | 22 #include "chrome/browser/profiles/profile.h" |
| (...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 56 | 58 |
| 57 } // namespace | 59 } // namespace |
| 58 | 60 |
| 59 IN_PROC_BROWSER_TEST_F(ExtensionTabsTest, GetWindow) { | 61 IN_PROC_BROWSER_TEST_F(ExtensionTabsTest, GetWindow) { |
| 60 int window_id = ExtensionTabUtil::GetWindowId(browser()); | 62 int window_id = ExtensionTabUtil::GetWindowId(browser()); |
| 61 | 63 |
| 62 // Invalid window ID error. | 64 // Invalid window ID error. |
| 63 scoped_refptr<WindowsGetFunction> function = new WindowsGetFunction(); | 65 scoped_refptr<WindowsGetFunction> function = new WindowsGetFunction(); |
| 64 scoped_refptr<Extension> extension(test_util::CreateEmptyExtension()); | 66 scoped_refptr<Extension> extension(test_util::CreateEmptyExtension()); |
| 65 function->set_extension(extension.get()); | 67 function->set_extension(extension.get()); |
| 66 EXPECT_TRUE(MatchPattern( | 68 EXPECT_TRUE(base::MatchPattern( |
| 67 utils::RunFunctionAndReturnError( | 69 utils::RunFunctionAndReturnError( |
| 68 function.get(), | 70 function.get(), base::StringPrintf("[%u]", window_id + 1), browser()), |
| 69 base::StringPrintf("[%u]", window_id + 1), | |
| 70 browser()), | |
| 71 keys::kWindowNotFoundError)); | 71 keys::kWindowNotFoundError)); |
| 72 | 72 |
| 73 // Basic window details. | 73 // Basic window details. |
| 74 gfx::Rect bounds; | 74 gfx::Rect bounds; |
| 75 if (browser()->window()->IsMinimized()) | 75 if (browser()->window()->IsMinimized()) |
| 76 bounds = browser()->window()->GetRestoredBounds(); | 76 bounds = browser()->window()->GetRestoredBounds(); |
| 77 else | 77 else |
| 78 bounds = browser()->window()->GetBounds(); | 78 bounds = browser()->window()->GetBounds(); |
| 79 | 79 |
| 80 function = new WindowsGetFunction(); | 80 function = new WindowsGetFunction(); |
| (...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 130 browser()))); | 130 browser()))); |
| 131 EXPECT_EQ("popup", api_test_utils::GetString(result.get(), "type")); | 131 EXPECT_EQ("popup", api_test_utils::GetString(result.get(), "type")); |
| 132 | 132 |
| 133 // Incognito. | 133 // Incognito. |
| 134 Browser* incognito_browser = CreateIncognitoBrowser(); | 134 Browser* incognito_browser = CreateIncognitoBrowser(); |
| 135 int incognito_window_id = ExtensionTabUtil::GetWindowId(incognito_browser); | 135 int incognito_window_id = ExtensionTabUtil::GetWindowId(incognito_browser); |
| 136 | 136 |
| 137 // Without "include_incognito". | 137 // Without "include_incognito". |
| 138 function = new WindowsGetFunction(); | 138 function = new WindowsGetFunction(); |
| 139 function->set_extension(extension.get()); | 139 function->set_extension(extension.get()); |
| 140 EXPECT_TRUE(MatchPattern( | 140 EXPECT_TRUE(base::MatchPattern( |
| 141 utils::RunFunctionAndReturnError( | 141 utils::RunFunctionAndReturnError( |
| 142 function.get(), | 142 function.get(), base::StringPrintf("[%u]", incognito_window_id), |
| 143 base::StringPrintf("[%u]", incognito_window_id), | |
| 144 browser()), | 143 browser()), |
| 145 keys::kWindowNotFoundError)); | 144 keys::kWindowNotFoundError)); |
| 146 | 145 |
| 147 // With "include_incognito". | 146 // With "include_incognito". |
| 148 function = new WindowsGetFunction(); | 147 function = new WindowsGetFunction(); |
| 149 function->set_extension(extension.get()); | 148 function->set_extension(extension.get()); |
| 150 result.reset(utils::ToDictionary( | 149 result.reset(utils::ToDictionary( |
| 151 utils::RunFunctionAndReturnSingleResult( | 150 utils::RunFunctionAndReturnSingleResult( |
| 152 function.get(), | 151 function.get(), |
| 153 base::StringPrintf("[%u]", incognito_window_id), | 152 base::StringPrintf("[%u]", incognito_window_id), |
| (...skipping 206 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 360 static const char kArgsWithExplicitIncognitoParam[] = | 359 static const char kArgsWithExplicitIncognitoParam[] = |
| 361 "[{\"url\": \"about:blank\", \"incognito\": false }]"; | 360 "[{\"url\": \"about:blank\", \"incognito\": false }]"; |
| 362 // Force Incognito mode. | 361 // Force Incognito mode. |
| 363 IncognitoModePrefs::SetAvailability(browser()->profile()->GetPrefs(), | 362 IncognitoModePrefs::SetAvailability(browser()->profile()->GetPrefs(), |
| 364 IncognitoModePrefs::FORCED); | 363 IncognitoModePrefs::FORCED); |
| 365 | 364 |
| 366 // Run with an explicit "incognito" param. | 365 // Run with an explicit "incognito" param. |
| 367 scoped_refptr<WindowsCreateFunction> function = new WindowsCreateFunction(); | 366 scoped_refptr<WindowsCreateFunction> function = new WindowsCreateFunction(); |
| 368 scoped_refptr<Extension> extension(test_util::CreateEmptyExtension()); | 367 scoped_refptr<Extension> extension(test_util::CreateEmptyExtension()); |
| 369 function->set_extension(extension.get()); | 368 function->set_extension(extension.get()); |
| 370 EXPECT_TRUE(MatchPattern( | 369 EXPECT_TRUE(base::MatchPattern( |
| 371 utils::RunFunctionAndReturnError(function.get(), | 370 utils::RunFunctionAndReturnError( |
| 372 kArgsWithExplicitIncognitoParam, | 371 function.get(), kArgsWithExplicitIncognitoParam, browser()), |
| 373 browser()), | |
| 374 keys::kIncognitoModeIsForced)); | 372 keys::kIncognitoModeIsForced)); |
| 375 | 373 |
| 376 // Now try opening a normal window from incognito window. | 374 // Now try opening a normal window from incognito window. |
| 377 Browser* incognito_browser = CreateIncognitoBrowser(); | 375 Browser* incognito_browser = CreateIncognitoBrowser(); |
| 378 // Run with an explicit "incognito" param. | 376 // Run with an explicit "incognito" param. |
| 379 function = new WindowsCreateFunction(); | 377 function = new WindowsCreateFunction(); |
| 380 function->set_extension(extension.get()); | 378 function->set_extension(extension.get()); |
| 381 EXPECT_TRUE(MatchPattern( | 379 EXPECT_TRUE(base::MatchPattern( |
| 382 utils::RunFunctionAndReturnError(function.get(), | 380 utils::RunFunctionAndReturnError( |
| 383 kArgsWithExplicitIncognitoParam, | 381 function.get(), kArgsWithExplicitIncognitoParam, incognito_browser), |
| 384 incognito_browser), | |
| 385 keys::kIncognitoModeIsForced)); | 382 keys::kIncognitoModeIsForced)); |
| 386 } | 383 } |
| 387 | 384 |
| 388 IN_PROC_BROWSER_TEST_F(ExtensionTabsTest, | 385 IN_PROC_BROWSER_TEST_F(ExtensionTabsTest, |
| 389 DontCreateIncognitoWindowWhenIncognitoDisabled) { | 386 DontCreateIncognitoWindowWhenIncognitoDisabled) { |
| 390 static const char kArgs[] = | 387 static const char kArgs[] = |
| 391 "[{\"url\": \"about:blank\", \"incognito\": true }]"; | 388 "[{\"url\": \"about:blank\", \"incognito\": true }]"; |
| 392 | 389 |
| 393 Browser* incognito_browser = CreateIncognitoBrowser(); | 390 Browser* incognito_browser = CreateIncognitoBrowser(); |
| 394 // Disable Incognito mode. | 391 // Disable Incognito mode. |
| 395 IncognitoModePrefs::SetAvailability(browser()->profile()->GetPrefs(), | 392 IncognitoModePrefs::SetAvailability(browser()->profile()->GetPrefs(), |
| 396 IncognitoModePrefs::DISABLED); | 393 IncognitoModePrefs::DISABLED); |
| 397 // Run in normal window. | 394 // Run in normal window. |
| 398 scoped_refptr<WindowsCreateFunction> function = new WindowsCreateFunction(); | 395 scoped_refptr<WindowsCreateFunction> function = new WindowsCreateFunction(); |
| 399 scoped_refptr<Extension> extension(test_util::CreateEmptyExtension()); | 396 scoped_refptr<Extension> extension(test_util::CreateEmptyExtension()); |
| 400 function->set_extension(extension.get()); | 397 function->set_extension(extension.get()); |
| 401 EXPECT_TRUE(MatchPattern( | 398 EXPECT_TRUE(base::MatchPattern( |
| 402 utils::RunFunctionAndReturnError(function.get(), | 399 utils::RunFunctionAndReturnError(function.get(), kArgs, browser()), |
| 403 kArgs, | |
| 404 browser()), | |
| 405 keys::kIncognitoModeIsDisabled)); | 400 keys::kIncognitoModeIsDisabled)); |
| 406 | 401 |
| 407 // Run in incognito window. | 402 // Run in incognito window. |
| 408 function = new WindowsCreateFunction(); | 403 function = new WindowsCreateFunction(); |
| 409 function->set_extension(extension.get()); | 404 function->set_extension(extension.get()); |
| 410 EXPECT_TRUE(MatchPattern( | 405 EXPECT_TRUE(base::MatchPattern(utils::RunFunctionAndReturnError( |
| 411 utils::RunFunctionAndReturnError(function.get(), | 406 function.get(), kArgs, incognito_browser), |
| 412 kArgs, | 407 keys::kIncognitoModeIsDisabled)); |
| 413 incognito_browser), | |
| 414 keys::kIncognitoModeIsDisabled)); | |
| 415 } | 408 } |
| 416 | 409 |
| 417 IN_PROC_BROWSER_TEST_F(ExtensionTabsTest, QueryCurrentWindowTabs) { | 410 IN_PROC_BROWSER_TEST_F(ExtensionTabsTest, QueryCurrentWindowTabs) { |
| 418 const size_t kExtraWindows = 3; | 411 const size_t kExtraWindows = 3; |
| 419 for (size_t i = 0; i < kExtraWindows; ++i) | 412 for (size_t i = 0; i < kExtraWindows; ++i) |
| 420 CreateBrowser(browser()->profile()); | 413 CreateBrowser(browser()->profile()); |
| 421 | 414 |
| 422 GURL url(url::kAboutBlankURL); | 415 GURL url(url::kAboutBlankURL); |
| 423 AddTabAtIndex(0, url, ui::PAGE_TRANSITION_LINK); | 416 AddTabAtIndex(0, url, ui::PAGE_TRANSITION_LINK); |
| 424 int window_id = ExtensionTabUtil::GetWindowId(browser()); | 417 int window_id = ExtensionTabUtil::GetWindowId(browser()); |
| (...skipping 100 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 525 } | 518 } |
| 526 | 519 |
| 527 IN_PROC_BROWSER_TEST_F(ExtensionTabsTest, InvalidUpdateWindowState) { | 520 IN_PROC_BROWSER_TEST_F(ExtensionTabsTest, InvalidUpdateWindowState) { |
| 528 int window_id = ExtensionTabUtil::GetWindowId(browser()); | 521 int window_id = ExtensionTabUtil::GetWindowId(browser()); |
| 529 | 522 |
| 530 static const char kArgsMinimizedWithFocus[] = | 523 static const char kArgsMinimizedWithFocus[] = |
| 531 "[%u, {\"state\": \"minimized\", \"focused\": true}]"; | 524 "[%u, {\"state\": \"minimized\", \"focused\": true}]"; |
| 532 scoped_refptr<WindowsUpdateFunction> function = new WindowsUpdateFunction(); | 525 scoped_refptr<WindowsUpdateFunction> function = new WindowsUpdateFunction(); |
| 533 scoped_refptr<Extension> extension(test_util::CreateEmptyExtension()); | 526 scoped_refptr<Extension> extension(test_util::CreateEmptyExtension()); |
| 534 function->set_extension(extension.get()); | 527 function->set_extension(extension.get()); |
| 535 EXPECT_TRUE(MatchPattern( | 528 EXPECT_TRUE(base::MatchPattern( |
| 536 utils::RunFunctionAndReturnError( | 529 utils::RunFunctionAndReturnError( |
| 537 function.get(), | 530 function.get(), |
| 538 base::StringPrintf(kArgsMinimizedWithFocus, window_id), | 531 base::StringPrintf(kArgsMinimizedWithFocus, window_id), browser()), |
| 539 browser()), | |
| 540 keys::kInvalidWindowStateError)); | 532 keys::kInvalidWindowStateError)); |
| 541 | 533 |
| 542 static const char kArgsMaximizedWithoutFocus[] = | 534 static const char kArgsMaximizedWithoutFocus[] = |
| 543 "[%u, {\"state\": \"maximized\", \"focused\": false}]"; | 535 "[%u, {\"state\": \"maximized\", \"focused\": false}]"; |
| 544 function = new WindowsUpdateFunction(); | 536 function = new WindowsUpdateFunction(); |
| 545 function->set_extension(extension.get()); | 537 function->set_extension(extension.get()); |
| 546 EXPECT_TRUE(MatchPattern( | 538 EXPECT_TRUE(base::MatchPattern( |
| 547 utils::RunFunctionAndReturnError( | 539 utils::RunFunctionAndReturnError( |
| 548 function.get(), | 540 function.get(), |
| 549 base::StringPrintf(kArgsMaximizedWithoutFocus, window_id), | 541 base::StringPrintf(kArgsMaximizedWithoutFocus, window_id), browser()), |
| 550 browser()), | |
| 551 keys::kInvalidWindowStateError)); | 542 keys::kInvalidWindowStateError)); |
| 552 | 543 |
| 553 static const char kArgsMinimizedWithBounds[] = | 544 static const char kArgsMinimizedWithBounds[] = |
| 554 "[%u, {\"state\": \"minimized\", \"width\": 500}]"; | 545 "[%u, {\"state\": \"minimized\", \"width\": 500}]"; |
| 555 function = new WindowsUpdateFunction(); | 546 function = new WindowsUpdateFunction(); |
| 556 function->set_extension(extension.get()); | 547 function->set_extension(extension.get()); |
| 557 EXPECT_TRUE(MatchPattern( | 548 EXPECT_TRUE(base::MatchPattern( |
| 558 utils::RunFunctionAndReturnError( | 549 utils::RunFunctionAndReturnError( |
| 559 function.get(), | 550 function.get(), |
| 560 base::StringPrintf(kArgsMinimizedWithBounds, window_id), | 551 base::StringPrintf(kArgsMinimizedWithBounds, window_id), browser()), |
| 561 browser()), | |
| 562 keys::kInvalidWindowStateError)); | 552 keys::kInvalidWindowStateError)); |
| 563 | 553 |
| 564 static const char kArgsMaximizedWithBounds[] = | 554 static const char kArgsMaximizedWithBounds[] = |
| 565 "[%u, {\"state\": \"maximized\", \"width\": 500}]"; | 555 "[%u, {\"state\": \"maximized\", \"width\": 500}]"; |
| 566 function = new WindowsUpdateFunction(); | 556 function = new WindowsUpdateFunction(); |
| 567 function->set_extension(extension.get()); | 557 function->set_extension(extension.get()); |
| 568 EXPECT_TRUE(MatchPattern( | 558 EXPECT_TRUE(base::MatchPattern( |
| 569 utils::RunFunctionAndReturnError( | 559 utils::RunFunctionAndReturnError( |
| 570 function.get(), | 560 function.get(), |
| 571 base::StringPrintf(kArgsMaximizedWithBounds, window_id), | 561 base::StringPrintf(kArgsMaximizedWithBounds, window_id), browser()), |
| 572 browser()), | |
| 573 keys::kInvalidWindowStateError)); | 562 keys::kInvalidWindowStateError)); |
| 574 } | 563 } |
| 575 | 564 |
| 576 IN_PROC_BROWSER_TEST_F(ExtensionWindowCreateTest, AcceptState) { | 565 IN_PROC_BROWSER_TEST_F(ExtensionWindowCreateTest, AcceptState) { |
| 577 scoped_refptr<WindowsCreateFunction> function(new WindowsCreateFunction()); | 566 scoped_refptr<WindowsCreateFunction> function(new WindowsCreateFunction()); |
| 578 scoped_refptr<Extension> extension(test_util::CreateEmptyExtension()); | 567 scoped_refptr<Extension> extension(test_util::CreateEmptyExtension()); |
| 579 function->set_extension(extension.get()); | 568 function->set_extension(extension.get()); |
| 580 | 569 |
| 581 scoped_ptr<base::DictionaryValue> result( | 570 scoped_ptr<base::DictionaryValue> result( |
| 582 utils::ToDictionary(utils::RunFunctionAndReturnSingleResult( | 571 utils::ToDictionary(utils::RunFunctionAndReturnSingleResult( |
| (...skipping 19 matching lines...) Expand all Loading... |
| 602 utils::INCLUDE_INCOGNITO))); | 591 utils::INCLUDE_INCOGNITO))); |
| 603 window_id = api_test_utils::GetInteger(result.get(), "id"); | 592 window_id = api_test_utils::GetInteger(result.get(), "id"); |
| 604 new_window = ExtensionTabUtil::GetBrowserFromWindowID(function.get(), | 593 new_window = ExtensionTabUtil::GetBrowserFromWindowID(function.get(), |
| 605 window_id, &error); | 594 window_id, &error); |
| 606 EXPECT_TRUE(error.empty()); | 595 EXPECT_TRUE(error.empty()); |
| 607 EXPECT_TRUE(new_window->window()->IsFullscreen()); | 596 EXPECT_TRUE(new_window->window()->IsFullscreen()); |
| 608 #endif // !defined(OS_MACOSX) | 597 #endif // !defined(OS_MACOSX) |
| 609 } | 598 } |
| 610 | 599 |
| 611 IN_PROC_BROWSER_TEST_F(ExtensionWindowCreateTest, ValidateCreateWindowState) { | 600 IN_PROC_BROWSER_TEST_F(ExtensionWindowCreateTest, ValidateCreateWindowState) { |
| 601 EXPECT_TRUE(base::MatchPattern( |
| 602 RunCreateWindowExpectError( |
| 603 "[{\"state\": \"fullscreen\", \"type\": \"panel\"}]"), |
| 604 keys::kInvalidWindowStateError)); |
| 605 EXPECT_TRUE(base::MatchPattern( |
| 606 RunCreateWindowExpectError( |
| 607 "[{\"state\": \"maximized\", \"type\": \"panel\"}]"), |
| 608 keys::kInvalidWindowStateError)); |
| 609 EXPECT_TRUE(base::MatchPattern( |
| 610 RunCreateWindowExpectError( |
| 611 "[{\"state\": \"minimized\", \"type\": \"panel\"}]"), |
| 612 keys::kInvalidWindowStateError)); |
| 612 EXPECT_TRUE( | 613 EXPECT_TRUE( |
| 613 MatchPattern(RunCreateWindowExpectError( | 614 base::MatchPattern(RunCreateWindowExpectError( |
| 614 "[{\"state\": \"fullscreen\", \"type\": \"panel\"}]"), | 615 "[{\"state\": \"minimized\", \"focused\": true}]"), |
| 615 keys::kInvalidWindowStateError)); | 616 keys::kInvalidWindowStateError)); |
| 617 EXPECT_TRUE(base::MatchPattern( |
| 618 RunCreateWindowExpectError( |
| 619 "[{\"state\": \"maximized\", \"focused\": false}]"), |
| 620 keys::kInvalidWindowStateError)); |
| 621 EXPECT_TRUE(base::MatchPattern( |
| 622 RunCreateWindowExpectError( |
| 623 "[{\"state\": \"fullscreen\", \"focused\": false}]"), |
| 624 keys::kInvalidWindowStateError)); |
| 616 EXPECT_TRUE( | 625 EXPECT_TRUE( |
| 617 MatchPattern(RunCreateWindowExpectError( | 626 base::MatchPattern(RunCreateWindowExpectError( |
| 618 "[{\"state\": \"maximized\", \"type\": \"panel\"}]"), | 627 "[{\"state\": \"minimized\", \"width\": 500}]"), |
| 619 keys::kInvalidWindowStateError)); | 628 keys::kInvalidWindowStateError)); |
| 620 EXPECT_TRUE( | 629 EXPECT_TRUE( |
| 621 MatchPattern(RunCreateWindowExpectError( | 630 base::MatchPattern(RunCreateWindowExpectError( |
| 622 "[{\"state\": \"minimized\", \"type\": \"panel\"}]"), | 631 "[{\"state\": \"maximized\", \"width\": 500}]"), |
| 623 keys::kInvalidWindowStateError)); | 632 keys::kInvalidWindowStateError)); |
| 624 EXPECT_TRUE( | 633 EXPECT_TRUE( |
| 625 MatchPattern(RunCreateWindowExpectError( | 634 base::MatchPattern(RunCreateWindowExpectError( |
| 626 "[{\"state\": \"minimized\", \"focused\": true}]"), | 635 "[{\"state\": \"fullscreen\", \"width\": 500}]"), |
| 627 keys::kInvalidWindowStateError)); | 636 keys::kInvalidWindowStateError)); |
| 628 EXPECT_TRUE( | |
| 629 MatchPattern(RunCreateWindowExpectError( | |
| 630 "[{\"state\": \"maximized\", \"focused\": false}]"), | |
| 631 keys::kInvalidWindowStateError)); | |
| 632 EXPECT_TRUE( | |
| 633 MatchPattern(RunCreateWindowExpectError( | |
| 634 "[{\"state\": \"fullscreen\", \"focused\": false}]"), | |
| 635 keys::kInvalidWindowStateError)); | |
| 636 EXPECT_TRUE(MatchPattern(RunCreateWindowExpectError( | |
| 637 "[{\"state\": \"minimized\", \"width\": 500}]"), | |
| 638 keys::kInvalidWindowStateError)); | |
| 639 EXPECT_TRUE(MatchPattern(RunCreateWindowExpectError( | |
| 640 "[{\"state\": \"maximized\", \"width\": 500}]"), | |
| 641 keys::kInvalidWindowStateError)); | |
| 642 EXPECT_TRUE(MatchPattern(RunCreateWindowExpectError( | |
| 643 "[{\"state\": \"fullscreen\", \"width\": 500}]"), | |
| 644 keys::kInvalidWindowStateError)); | |
| 645 } | 637 } |
| 646 | 638 |
| 647 IN_PROC_BROWSER_TEST_F(ExtensionTabsTest, DuplicateTab) { | 639 IN_PROC_BROWSER_TEST_F(ExtensionTabsTest, DuplicateTab) { |
| 648 content::OpenURLParams params(GURL(url::kAboutBlankURL), | 640 content::OpenURLParams params(GURL(url::kAboutBlankURL), |
| 649 content::Referrer(), | 641 content::Referrer(), |
| 650 NEW_FOREGROUND_TAB, | 642 NEW_FOREGROUND_TAB, |
| 651 ui::PAGE_TRANSITION_LINK, | 643 ui::PAGE_TRANSITION_LINK, |
| 652 false); | 644 false); |
| 653 content::WebContents* web_contents = browser()->OpenURL(params); | 645 content::WebContents* web_contents = browser()->OpenURL(params); |
| 654 int tab_id = ExtensionTabUtil::GetTabId(web_contents); | 646 int tab_id = ExtensionTabUtil::GetTabId(web_contents); |
| (...skipping 418 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1073 EXPECT_TRUE(RunSetZoomSettings(tab_id_A1, "manual", NULL)); | 1065 EXPECT_TRUE(RunSetZoomSettings(tab_id_A1, "manual", NULL)); |
| 1074 EXPECT_TRUE(RunSetZoom(tab_id_A1, 1.3f)); | 1066 EXPECT_TRUE(RunSetZoom(tab_id_A1, 1.3f)); |
| 1075 EXPECT_FLOAT_EQ( | 1067 EXPECT_FLOAT_EQ( |
| 1076 1.3f, content::ZoomLevelToZoomFactor(GetZoomLevel(web_contents_A1))); | 1068 1.3f, content::ZoomLevelToZoomFactor(GetZoomLevel(web_contents_A1))); |
| 1077 EXPECT_FLOAT_EQ( | 1069 EXPECT_FLOAT_EQ( |
| 1078 1.1f, content::ZoomLevelToZoomFactor(GetZoomLevel(web_contents_A2))); | 1070 1.1f, content::ZoomLevelToZoomFactor(GetZoomLevel(web_contents_A2))); |
| 1079 | 1071 |
| 1080 // Test 'disabled' mode, which will reset A1's zoom to 1.f. | 1072 // Test 'disabled' mode, which will reset A1's zoom to 1.f. |
| 1081 EXPECT_TRUE(RunSetZoomSettings(tab_id_A1, "disabled", NULL)); | 1073 EXPECT_TRUE(RunSetZoomSettings(tab_id_A1, "disabled", NULL)); |
| 1082 std::string error = RunSetZoomExpectError(tab_id_A1, 1.4f); | 1074 std::string error = RunSetZoomExpectError(tab_id_A1, 1.4f); |
| 1083 EXPECT_TRUE(MatchPattern(error, keys::kCannotZoomDisabledTabError)); | 1075 EXPECT_TRUE(base::MatchPattern(error, keys::kCannotZoomDisabledTabError)); |
| 1084 EXPECT_FLOAT_EQ( | 1076 EXPECT_FLOAT_EQ( |
| 1085 1.f, content::ZoomLevelToZoomFactor(GetZoomLevel(web_contents_A1))); | 1077 1.f, content::ZoomLevelToZoomFactor(GetZoomLevel(web_contents_A1))); |
| 1086 // We should still be able to zoom A2 though. | 1078 // We should still be able to zoom A2 though. |
| 1087 EXPECT_TRUE(RunSetZoom(tab_id_A2, 1.4f)); | 1079 EXPECT_TRUE(RunSetZoom(tab_id_A2, 1.4f)); |
| 1088 EXPECT_FLOAT_EQ( | 1080 EXPECT_FLOAT_EQ( |
| 1089 1.4f, content::ZoomLevelToZoomFactor(GetZoomLevel(web_contents_A2))); | 1081 1.4f, content::ZoomLevelToZoomFactor(GetZoomLevel(web_contents_A2))); |
| 1090 } | 1082 } |
| 1091 | 1083 |
| 1092 IN_PROC_BROWSER_TEST_F(ExtensionTabsZoomTest, PerTabResetsOnNavigation) { | 1084 IN_PROC_BROWSER_TEST_F(ExtensionTabsZoomTest, PerTabResetsOnNavigation) { |
| 1093 net::SpawnedTestServer http_server( | 1085 net::SpawnedTestServer http_server( |
| (...skipping 36 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1130 EXPECT_EQ("per-origin", scope); | 1122 EXPECT_EQ("per-origin", scope); |
| 1131 | 1123 |
| 1132 EXPECT_TRUE(RunSetZoomSettings(tab_id, "automatic", "per-tab")); | 1124 EXPECT_TRUE(RunSetZoomSettings(tab_id, "automatic", "per-tab")); |
| 1133 EXPECT_TRUE(RunGetZoomSettings(tab_id, &mode, &scope)); | 1125 EXPECT_TRUE(RunGetZoomSettings(tab_id, &mode, &scope)); |
| 1134 | 1126 |
| 1135 EXPECT_EQ("automatic", mode); | 1127 EXPECT_EQ("automatic", mode); |
| 1136 EXPECT_EQ("per-tab", scope); | 1128 EXPECT_EQ("per-tab", scope); |
| 1137 | 1129 |
| 1138 std::string error = | 1130 std::string error = |
| 1139 RunSetZoomSettingsExpectError(tab_id, "manual", "per-origin"); | 1131 RunSetZoomSettingsExpectError(tab_id, "manual", "per-origin"); |
| 1140 EXPECT_TRUE(MatchPattern(error, | 1132 EXPECT_TRUE(base::MatchPattern(error, keys::kPerOriginOnlyInAutomaticError)); |
| 1141 keys::kPerOriginOnlyInAutomaticError)); | |
| 1142 error = | 1133 error = |
| 1143 RunSetZoomSettingsExpectError(tab_id, "disabled", "per-origin"); | 1134 RunSetZoomSettingsExpectError(tab_id, "disabled", "per-origin"); |
| 1144 EXPECT_TRUE(MatchPattern(error, | 1135 EXPECT_TRUE(base::MatchPattern(error, keys::kPerOriginOnlyInAutomaticError)); |
| 1145 keys::kPerOriginOnlyInAutomaticError)); | |
| 1146 } | 1136 } |
| 1147 | 1137 |
| 1148 IN_PROC_BROWSER_TEST_F(ExtensionTabsZoomTest, CannotZoomInvalidTab) { | 1138 IN_PROC_BROWSER_TEST_F(ExtensionTabsZoomTest, CannotZoomInvalidTab) { |
| 1149 content::OpenURLParams params(GetOpenParams(url::kAboutBlankURL)); | 1139 content::OpenURLParams params(GetOpenParams(url::kAboutBlankURL)); |
| 1150 content::WebContents* web_contents = OpenUrlAndWaitForLoad(params.url); | 1140 content::WebContents* web_contents = OpenUrlAndWaitForLoad(params.url); |
| 1151 int tab_id = ExtensionTabUtil::GetTabId(web_contents); | 1141 int tab_id = ExtensionTabUtil::GetTabId(web_contents); |
| 1152 | 1142 |
| 1153 int bogus_id = tab_id + 100; | 1143 int bogus_id = tab_id + 100; |
| 1154 std::string error = RunSetZoomExpectError(bogus_id, 3.14159); | 1144 std::string error = RunSetZoomExpectError(bogus_id, 3.14159); |
| 1155 EXPECT_TRUE(MatchPattern(error, keys::kTabNotFoundError)); | 1145 EXPECT_TRUE(base::MatchPattern(error, keys::kTabNotFoundError)); |
| 1156 | 1146 |
| 1157 error = RunSetZoomSettingsExpectError(bogus_id, "manual", "per-tab"); | 1147 error = RunSetZoomSettingsExpectError(bogus_id, "manual", "per-tab"); |
| 1158 EXPECT_TRUE(MatchPattern(error, keys::kTabNotFoundError)); | 1148 EXPECT_TRUE(base::MatchPattern(error, keys::kTabNotFoundError)); |
| 1159 | 1149 |
| 1160 const char kNewTestTabArgs[] = "chrome://version"; | 1150 const char kNewTestTabArgs[] = "chrome://version"; |
| 1161 params = GetOpenParams(kNewTestTabArgs); | 1151 params = GetOpenParams(kNewTestTabArgs); |
| 1162 web_contents = browser()->OpenURL(params); | 1152 web_contents = browser()->OpenURL(params); |
| 1163 tab_id = ExtensionTabUtil::GetTabId(web_contents); | 1153 tab_id = ExtensionTabUtil::GetTabId(web_contents); |
| 1164 | 1154 |
| 1165 // Test chrome.tabs.setZoom(). | 1155 // Test chrome.tabs.setZoom(). |
| 1166 error = RunSetZoomExpectError(tab_id, 3.14159); | 1156 error = RunSetZoomExpectError(tab_id, 3.14159); |
| 1167 EXPECT_TRUE(MatchPattern(error, manifest_errors::kCannotAccessChromeUrl)); | 1157 EXPECT_TRUE( |
| 1158 base::MatchPattern(error, manifest_errors::kCannotAccessChromeUrl)); |
| 1168 | 1159 |
| 1169 // chrome.tabs.setZoomSettings(). | 1160 // chrome.tabs.setZoomSettings(). |
| 1170 error = RunSetZoomSettingsExpectError(tab_id, "manual", "per-tab"); | 1161 error = RunSetZoomSettingsExpectError(tab_id, "manual", "per-tab"); |
| 1171 EXPECT_TRUE(MatchPattern(error, manifest_errors::kCannotAccessChromeUrl)); | 1162 EXPECT_TRUE( |
| 1163 base::MatchPattern(error, manifest_errors::kCannotAccessChromeUrl)); |
| 1172 } | 1164 } |
| 1173 | 1165 |
| 1174 } // namespace extensions | 1166 } // namespace extensions |
| OLD | NEW |