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

Side by Side Diff: chrome/browser/devtools/devtools_sanity_browsertest.cc

Issue 2734123004: add a new set of commands to resize and position windows (Closed)
Patch Set: add tests Created 3 years, 9 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 (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 #include <stddef.h> 5 #include <stddef.h>
6 6
7 #include <memory> 7 #include <memory>
8 8
9 #include "base/bind.h" 9 #include "base/bind.h"
10 #include "base/cancelable_callback.h" 10 #include "base/cancelable_callback.h"
11 #include "base/command_line.h" 11 #include "base/command_line.h"
12 #include "base/compiler_specific.h" 12 #include "base/compiler_specific.h"
13 #include "base/files/file_path.h" 13 #include "base/files/file_path.h"
14 #include "base/location.h" 14 #include "base/location.h"
15 #include "base/macros.h" 15 #include "base/macros.h"
16 #include "base/memory/ptr_util.h" 16 #include "base/memory/ptr_util.h"
17 #include "base/memory/ref_counted.h" 17 #include "base/memory/ref_counted.h"
18 #include "base/path_service.h" 18 #include "base/path_service.h"
19 #include "base/single_thread_task_runner.h" 19 #include "base/single_thread_task_runner.h"
20 #include "base/strings/string_number_conversions.h" 20 #include "base/strings/string_number_conversions.h"
21 #include "base/strings/string_util.h" 21 #include "base/strings/string_util.h"
22 #include "base/strings/utf_string_conversions.h" 22 #include "base/strings/utf_string_conversions.h"
23 #include "base/test/test_timeouts.h" 23 #include "base/test/test_timeouts.h"
24 #include "base/threading/sequenced_worker_pool.h" 24 #include "base/threading/sequenced_worker_pool.h"
25 #include "base/threading/thread_task_runner_handle.h" 25 #include "base/threading/thread_task_runner_handle.h"
26 #include "build/build_config.h" 26 #include "build/build_config.h"
27 #include "chrome/browser/chrome_notification_types.h" 27 #include "chrome/browser/chrome_notification_types.h"
28 #include "chrome/browser/devtools/chrome_devtools_manager_delegate.h"
28 #include "chrome/browser/devtools/device/tcp_device_provider.h" 29 #include "chrome/browser/devtools/device/tcp_device_provider.h"
30 #include "chrome/browser/devtools/devtools_protocol_constants.h"
29 #include "chrome/browser/devtools/devtools_window_testing.h" 31 #include "chrome/browser/devtools/devtools_window_testing.h"
30 #include "chrome/browser/extensions/extension_apitest.h" 32 #include "chrome/browser/extensions/extension_apitest.h"
31 #include "chrome/browser/extensions/extension_browsertest.h" 33 #include "chrome/browser/extensions/extension_browsertest.h"
32 #include "chrome/browser/extensions/extension_service.h" 34 #include "chrome/browser/extensions/extension_service.h"
33 #include "chrome/browser/extensions/test_extension_dir.h" 35 #include "chrome/browser/extensions/test_extension_dir.h"
34 #include "chrome/browser/extensions/unpacked_installer.h" 36 #include "chrome/browser/extensions/unpacked_installer.h"
35 #include "chrome/browser/lifetime/application_lifetime.h" 37 #include "chrome/browser/lifetime/application_lifetime.h"
36 #include "chrome/browser/profiles/profile.h" 38 #include "chrome/browser/profiles/profile.h"
37 #include "chrome/browser/ui/browser.h" 39 #include "chrome/browser/ui/browser.h"
38 #include "chrome/browser/ui/browser_commands.h" 40 #include "chrome/browser/ui/browser_commands.h"
41 #include "chrome/browser/ui/browser_window.h"
42 #include "chrome/browser/ui/exclusive_access/exclusive_access_context.h"
39 #include "chrome/browser/ui/tabs/tab_strip_model.h" 43 #include "chrome/browser/ui/tabs/tab_strip_model.h"
40 #include "chrome/common/chrome_paths.h" 44 #include "chrome/common/chrome_paths.h"
41 #include "chrome/common/chrome_switches.h" 45 #include "chrome/common/chrome_switches.h"
42 #include "chrome/common/pref_names.h" 46 #include "chrome/common/pref_names.h"
43 #include "chrome/common/url_constants.h" 47 #include "chrome/common/url_constants.h"
44 #include "chrome/test/base/in_process_browser_test.h" 48 #include "chrome/test/base/in_process_browser_test.h"
45 #include "chrome/test/base/test_chrome_web_ui_controller_factory.h" 49 #include "chrome/test/base/test_chrome_web_ui_controller_factory.h"
46 #include "chrome/test/base/ui_test_utils.h" 50 #include "chrome/test/base/ui_test_utils.h"
47 #include "components/app_modal/javascript_app_modal_dialog.h" 51 #include "components/app_modal/javascript_app_modal_dialog.h"
48 #include "components/app_modal/native_app_modal_dialog.h" 52 #include "components/app_modal/native_app_modal_dialog.h"
(...skipping 1545 matching lines...) Expand 10 before | Expand all | Expand 10 after
1594 RunTestFunction(window, "testWindowInitializedOnNavigateBack"); 1598 RunTestFunction(window, "testWindowInitializedOnNavigateBack");
1595 1599
1596 DevToolsWindowTesting::CloseDevToolsWindowSync(window); 1600 DevToolsWindowTesting::CloseDevToolsWindowSync(window);
1597 content::WebUIControllerFactory::UnregisterFactoryForTesting(&test_factory); 1601 content::WebUIControllerFactory::UnregisterFactoryForTesting(&test_factory);
1598 } 1602 }
1599 1603
1600 // Tests scripts panel showing. 1604 // Tests scripts panel showing.
1601 IN_PROC_BROWSER_TEST_F(DevToolsSanityTest, TestDevToolsSharedWorker) { 1605 IN_PROC_BROWSER_TEST_F(DevToolsSanityTest, TestDevToolsSharedWorker) {
1602 RunTest("testDevToolsSharedWorker", url::kAboutBlankURL); 1606 RunTest("testDevToolsSharedWorker", url::kAboutBlankURL);
1603 } 1607 }
1608
1609 // Encapsulates waiting for the browser window to change state. This is
1610 // needed for example on Chrome desktop linux, where window state change is done
1611 // asynchronously as an event received from a different process.
1612 class CheckWaiter {
1613 public:
1614 explicit CheckWaiter(base::Callback<bool()> callback, bool expected)
1615 : callback_(callback), expected_(expected) {}
1616 ~CheckWaiter() = default;
1617
1618 // Blocks until the browser window becomes maximized.
1619 void Wait() {
1620 if (Check())
1621 return;
1622
1623 base::RunLoop run_loop;
1624 quit_ = run_loop.QuitClosure();
1625 run_loop.Run();
1626 }
1627
1628 private:
1629 bool Check() {
1630 if (callback_.Run() != expected_) {
1631 base::MessageLoop::current()->task_runner()->PostTask(
1632 FROM_HERE, base::Bind(base::IgnoreResult(&CheckWaiter::Check),
1633 base::Unretained(this)));
1634 return false;
1635 }
1636
1637 // Quit the run_loop to end the wait.
1638 if (!quit_.is_null())
1639 base::ResetAndReturn(&quit_).Run();
1640 return true;
1641 }
1642
1643 base::Callback<bool()> callback_;
1644 bool expected_;
1645
1646 // The waiter's RunLoop quit closure.
1647 base::Closure quit_;
1648
1649 DISALLOW_COPY_AND_ASSIGN(CheckWaiter);
1650 };
1651
1652 class DevToolsManagerDelegateTest : public InProcessBrowserTest {
1653 public:
1654 std::unique_ptr<base::DictionaryValue> SendCommand(std::string state) {
1655 std::unique_ptr<base::DictionaryValue> params(new base::DictionaryValue);
1656 base::DictionaryValue* bounds_object = new base::DictionaryValue();
1657 bounds_object->SetString("windowState", state);
1658 params->Set("bounds", bounds_object);
1659 params->SetInteger("windowId", browser()->session_id().id());
1660 return ChromeDevToolsManagerDelegate::SetWindowBounds(0, params.release());
1661 }
1662
1663 void CheckIsMaximized(bool maximized) {
1664 CheckWaiter(base::Bind(&BrowserWindow::IsMaximized,
1665 base::Unretained(browser()->window())),
1666 maximized)
1667 .Wait();
1668 }
1669
1670 void CheckIsMinimized(bool minimized) {
1671 CheckWaiter(base::Bind(&BrowserWindow::IsMinimized,
1672 base::Unretained(browser()->window())),
1673 minimized)
1674 .Wait();
1675 }
1676
1677 void CheckIsFullscreen(bool fullscreen) {
1678 CheckWaiter(base::Bind(&BrowserWindow::IsFullscreen,
1679 base::Unretained(browser()->window())),
1680 fullscreen)
1681 .Wait();
1682 }
1683 };
1684
1685 IN_PROC_BROWSER_TEST_F(DevToolsManagerDelegateTest, MaximizeWindow) {
1686 browser()->window()->SetBounds(gfx::Rect(500, 600));
1687 CheckIsMaximized(false);
1688 SendCommand("maximized");
1689 CheckIsMaximized(true);
1690
1691 browser()->window()->Restore();
1692 browser()->window()->Minimize();
1693 CheckIsMaximized(false);
1694 CheckIsMinimized(true);
1695 SendCommand("maximized");
1696 CheckIsMaximized(true);
1697 CheckIsMinimized(false);
1698
1699 browser()->window()->Restore();
1700 browser()->window()->GetExclusiveAccessContext()->EnterFullscreen(
1701 GURL(), EXCLUSIVE_ACCESS_BUBBLE_TYPE_NONE);
1702 CheckIsMaximized(false);
1703 CheckIsFullscreen(true);
1704 SendCommand("maximized");
1705 CheckIsMaximized(true);
1706 CheckIsFullscreen(false);
1707
1708 browser()->window()->Maximize();
1709 CheckIsMaximized(true);
1710 SendCommand("maximized");
1711 CheckIsMaximized(true);
1712 }
1713
1714 IN_PROC_BROWSER_TEST_F(DevToolsManagerDelegateTest, MinimizeWindow) {
1715 browser()->window()->SetBounds(gfx::Rect(500, 600));
1716 CheckIsMinimized(false);
1717 SendCommand("minimized");
1718 CheckIsMinimized(true);
1719
1720 browser()->window()->Show();
1721 browser()->window()->Maximize();
1722 CheckIsMinimized(false);
1723 CheckIsMaximized(true);
1724 SendCommand("minimized");
1725 CheckIsMinimized(true);
1726
1727 browser()->window()->Show();
1728 browser()->window()->GetExclusiveAccessContext()->EnterFullscreen(
1729 GURL(), EXCLUSIVE_ACCESS_BUBBLE_TYPE_NONE);
1730 CheckIsMinimized(false);
1731 CheckIsFullscreen(true);
1732 SendCommand("minimized");
1733 CheckIsMinimized(true);
1734 CheckIsFullscreen(false);
1735 }
1736
1737 IN_PROC_BROWSER_TEST_F(DevToolsManagerDelegateTest, FullscreenWindow) {
1738 browser()->window()->SetBounds(gfx::Rect(500, 600));
1739 CheckIsFullscreen(false);
1740 SendCommand("fullscreen");
1741 CheckIsFullscreen(true);
1742
1743 browser()->window()->GetExclusiveAccessContext()->ExitFullscreen();
1744 browser()->window()->Maximize();
1745 CheckIsFullscreen(false);
1746 CheckIsMaximized(true);
1747 SendCommand("fullscreen");
1748 CheckIsFullscreen(true);
1749
1750 browser()->window()->GetExclusiveAccessContext()->ExitFullscreen();
1751 browser()->window()->Minimize();
1752 CheckIsFullscreen(false);
1753 CheckIsMinimized(true);
1754 SendCommand("fullscreen");
1755 CheckIsFullscreen(true);
1756 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698