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

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

Issue 1055933009: Validate windows.create API's state input parameter. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Created 5 years, 8 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 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"
(...skipping 24 matching lines...) Expand all
35 #include "net/test/spawned_test_server/spawned_test_server.h" 35 #include "net/test/spawned_test_server/spawned_test_server.h"
36 #include "ui/gfx/geometry/rect.h" 36 #include "ui/gfx/geometry/rect.h"
37 37
38 namespace extensions { 38 namespace extensions {
39 39
40 namespace keys = tabs_constants; 40 namespace keys = tabs_constants;
41 namespace utils = extension_function_test_utils; 41 namespace utils = extension_function_test_utils;
42 42
43 namespace { 43 namespace {
44 using ExtensionTabsTest = InProcessBrowserTest; 44 using ExtensionTabsTest = InProcessBrowserTest;
45 using ExtensionWindowCreateTest = InProcessBrowserTest; 45
46 class ExtensionWindowCreateTest : public InProcessBrowserTest {
47 public:
48 void SetUpOnMainThread() override;
49
50 base::Value* RunCreateWindow(const std::string& args);
51
52 // Runs chrome.windows.create(), expecting an error.
53 std::string RunCreateWindowExpectError(const std::string& args);
54
55 WindowsCreateFunction* function();
56
57 private:
58 scoped_refptr<Extension> extension_;
59 scoped_refptr<WindowsCreateFunction> function_;
not at google - send to devlin 2015/04/20 16:32:55 Can you make these tests sateless? I don't know wh
limasdf 2015/04/22 15:49:33 You're exactly right. Done.
60 };
61
62 void ExtensionWindowCreateTest::SetUpOnMainThread() {
63 InProcessBrowserTest::SetUpOnMainThread();
64 extension_ = test_util::CreateEmptyExtension();
46 } 65 }
47 66
67 base::Value* ExtensionWindowCreateTest::RunCreateWindow(
68 const std::string& args) {
69 function_ = new WindowsCreateFunction();
70 function_->set_extension(extension_.get());
71 return api_test_utils::RunFunctionAndReturnSingleResult(function_.get(), args,
72 browser()->profile());
73 }
74
75 std::string ExtensionWindowCreateTest::RunCreateWindowExpectError(
76 const std::string& args) {
77 function_ = new WindowsCreateFunction();
78 function_->set_extension(extension_.get());
79 return api_test_utils::RunFunctionAndReturnError(function_.get(), args,
80 browser()->profile());
81 }
82
83 WindowsCreateFunction* ExtensionWindowCreateTest::function() {
84 return function_.get();
85 }
86
87 } // namespace
88
48 IN_PROC_BROWSER_TEST_F(ExtensionTabsTest, GetWindow) { 89 IN_PROC_BROWSER_TEST_F(ExtensionTabsTest, GetWindow) {
49 int window_id = ExtensionTabUtil::GetWindowId(browser()); 90 int window_id = ExtensionTabUtil::GetWindowId(browser());
50 91
51 // Invalid window ID error. 92 // Invalid window ID error.
52 scoped_refptr<WindowsGetFunction> function = new WindowsGetFunction(); 93 scoped_refptr<WindowsGetFunction> function = new WindowsGetFunction();
53 scoped_refptr<Extension> extension(test_util::CreateEmptyExtension()); 94 scoped_refptr<Extension> extension(test_util::CreateEmptyExtension());
54 function->set_extension(extension.get()); 95 function->set_extension(extension.get());
55 EXPECT_TRUE(MatchPattern( 96 EXPECT_TRUE(MatchPattern(
56 utils::RunFunctionAndReturnError( 97 utils::RunFunctionAndReturnError(
57 function.get(), 98 function.get(),
(...skipping 498 matching lines...) Expand 10 before | Expand all | Expand 10 after
556 function->set_extension(extension.get()); 597 function->set_extension(extension.get());
557 EXPECT_TRUE(MatchPattern( 598 EXPECT_TRUE(MatchPattern(
558 utils::RunFunctionAndReturnError( 599 utils::RunFunctionAndReturnError(
559 function.get(), 600 function.get(),
560 base::StringPrintf(kArgsMaximizedWithBounds, window_id), 601 base::StringPrintf(kArgsMaximizedWithBounds, window_id),
561 browser()), 602 browser()),
562 keys::kInvalidWindowStateError)); 603 keys::kInvalidWindowStateError));
563 } 604 }
564 605
565 IN_PROC_BROWSER_TEST_F(ExtensionWindowCreateTest, AcceptState) { 606 IN_PROC_BROWSER_TEST_F(ExtensionWindowCreateTest, AcceptState) {
566 scoped_refptr<WindowsCreateFunction> function(new WindowsCreateFunction()); 607 scoped_ptr<base::DictionaryValue> result(
567 scoped_refptr<Extension> extension(test_util::CreateEmptyExtension()); 608 utils::ToDictionary(RunCreateWindow("[{\"state\": \"fullscreen\"}]")));
568 function->set_extension(extension.get());
569 609
570 scoped_ptr<base::DictionaryValue> result(
571 utils::ToDictionary(utils::RunFunctionAndReturnSingleResult(
572 function.get(), "[{\"state\": \"fullscreen\"}]", browser(),
573 utils::INCLUDE_INCOGNITO)));
574 int window_id = api_test_utils::GetInteger(result.get(), "id"); 610 int window_id = api_test_utils::GetInteger(result.get(), "id");
575 std::string error; 611 std::string error;
576 Browser* new_window = ExtensionTabUtil::GetBrowserFromWindowID( 612 Browser* new_window =
577 function.get(), window_id, &error); 613 ExtensionTabUtil::GetBrowserFromWindowID(function(), window_id, &error);
578 EXPECT_TRUE(new_window->window()->IsFullscreen()); 614 EXPECT_TRUE(new_window->window()->IsFullscreen());
579 EXPECT_TRUE(error.empty()); 615 EXPECT_TRUE(error.empty());
580 616
581 function = new WindowsCreateFunction(); 617 result.reset(
582 function->set_extension(extension.get()); 618 utils::ToDictionary(RunCreateWindow("[{\"state\": \"minimized\"}]")));
583 result.reset(utils::ToDictionary(utils::RunFunctionAndReturnSingleResult(
584 function.get(), "[{\"state\": \"minimized\"}]", browser(),
585 utils::INCLUDE_INCOGNITO)));
586 window_id = api_test_utils::GetInteger(result.get(), "id"); 619 window_id = api_test_utils::GetInteger(result.get(), "id");
587 new_window = ExtensionTabUtil::GetBrowserFromWindowID(function.get(), 620 new_window =
588 window_id, &error); 621 ExtensionTabUtil::GetBrowserFromWindowID(function(), window_id, &error);
589 EXPECT_TRUE(error.empty()); 622 EXPECT_TRUE(error.empty());
590 #if !defined(OS_LINUX) || defined(OS_CHROMEOS) 623 #if !defined(OS_LINUX) || defined(OS_CHROMEOS)
591 // DesktopWindowTreeHostX11::IsMinimized() relies on an asynchronous update 624 // DesktopWindowTreeHostX11::IsMinimized() relies on an asynchronous update
592 // from the window server. 625 // from the window server.
593 EXPECT_TRUE(new_window->window()->IsMinimized()); 626 EXPECT_TRUE(new_window->window()->IsMinimized());
594 #endif 627 #endif
595 } 628 }
596 629
630 IN_PROC_BROWSER_TEST_F(ExtensionWindowCreateTest, ValidateCreateWindowState) {
631 EXPECT_TRUE(
632 MatchPattern(RunCreateWindowExpectError(
633 "[{\"state\": \"fullscreen\", \"type\": \"panel\"}]"),
634 keys::kInvalidWindowStateError));
635 EXPECT_TRUE(
636 MatchPattern(RunCreateWindowExpectError(
637 "[{\"state\": \"maximized\", \"type\": \"panel\"}]"),
638 keys::kInvalidWindowStateError));
639 EXPECT_TRUE(
640 MatchPattern(RunCreateWindowExpectError(
641 "[{\"state\": \"minimized\", \"type\": \"panel\"}]"),
642 keys::kInvalidWindowStateError));
643 EXPECT_TRUE(
644 MatchPattern(RunCreateWindowExpectError(
645 "[{\"state\": \"minimized\", \"focused\": true}]"),
646 keys::kInvalidWindowStateError));
647 EXPECT_TRUE(
648 MatchPattern(RunCreateWindowExpectError(
649 "[{\"state\": \"maximized\", \"focused\": false}]"),
650 keys::kInvalidWindowStateError));
651 EXPECT_TRUE(
652 MatchPattern(RunCreateWindowExpectError(
653 "[{\"state\": \"fullscreen\", \"focused\": false}]"),
654 keys::kInvalidWindowStateError));
655 EXPECT_TRUE(MatchPattern(RunCreateWindowExpectError(
656 "[{\"state\": \"minimized\", \"width\": 500}]"),
657 keys::kInvalidWindowStateError));
658 EXPECT_TRUE(MatchPattern(RunCreateWindowExpectError(
659 "[{\"state\": \"maximized\", \"width\": 500}]"),
660 keys::kInvalidWindowStateError));
661 EXPECT_TRUE(MatchPattern(RunCreateWindowExpectError(
662 "[{\"state\": \"fullscreen\", \"width\": 500}]"),
663 keys::kInvalidWindowStateError));
664 }
665
597 IN_PROC_BROWSER_TEST_F(ExtensionTabsTest, DuplicateTab) { 666 IN_PROC_BROWSER_TEST_F(ExtensionTabsTest, DuplicateTab) {
598 content::OpenURLParams params(GURL(url::kAboutBlankURL), 667 content::OpenURLParams params(GURL(url::kAboutBlankURL),
599 content::Referrer(), 668 content::Referrer(),
600 NEW_FOREGROUND_TAB, 669 NEW_FOREGROUND_TAB,
601 ui::PAGE_TRANSITION_LINK, 670 ui::PAGE_TRANSITION_LINK,
602 false); 671 false);
603 content::WebContents* web_contents = browser()->OpenURL(params); 672 content::WebContents* web_contents = browser()->OpenURL(params);
604 int tab_id = ExtensionTabUtil::GetTabId(web_contents); 673 int tab_id = ExtensionTabUtil::GetTabId(web_contents);
605 int window_id = ExtensionTabUtil::GetWindowIdOfTab(web_contents); 674 int window_id = ExtensionTabUtil::GetWindowIdOfTab(web_contents);
606 int tab_index = -1; 675 int tab_index = -1;
(...skipping 508 matching lines...) Expand 10 before | Expand all | Expand 10 after
1115 // Test chrome.tabs.setZoom(). 1184 // Test chrome.tabs.setZoom().
1116 error = RunSetZoomExpectError(tab_id, 3.14159); 1185 error = RunSetZoomExpectError(tab_id, 3.14159);
1117 EXPECT_TRUE(MatchPattern(error, manifest_errors::kCannotAccessChromeUrl)); 1186 EXPECT_TRUE(MatchPattern(error, manifest_errors::kCannotAccessChromeUrl));
1118 1187
1119 // chrome.tabs.setZoomSettings(). 1188 // chrome.tabs.setZoomSettings().
1120 error = RunSetZoomSettingsExpectError(tab_id, "manual", "per-tab"); 1189 error = RunSetZoomSettingsExpectError(tab_id, "manual", "per-tab");
1121 EXPECT_TRUE(MatchPattern(error, manifest_errors::kCannotAccessChromeUrl)); 1190 EXPECT_TRUE(MatchPattern(error, manifest_errors::kCannotAccessChromeUrl));
1122 } 1191 }
1123 1192
1124 } // namespace extensions 1193 } // namespace extensions
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698