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

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

Issue 1051013002: Add default zoom functionality to chrome.tabs Zoom API. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Address suggestions. 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
« no previous file with comments | « chrome/browser/extensions/api/tabs/tabs_api.cc ('k') | chrome/common/extensions/api/tabs.json » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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"
11 #include "base/strings/string_util.h" 11 #include "base/strings/string_util.h"
12 #include "base/strings/stringprintf.h" 12 #include "base/strings/stringprintf.h"
13 #include "base/values.h" 13 #include "base/values.h"
14 #include "chrome/browser/devtools/devtools_window_testing.h" 14 #include "chrome/browser/devtools/devtools_window_testing.h"
15 #include "chrome/browser/extensions/api/tabs/tabs_api.h" 15 #include "chrome/browser/extensions/api/tabs/tabs_api.h"
16 #include "chrome/browser/extensions/api/tabs/tabs_constants.h" 16 #include "chrome/browser/extensions/api/tabs/tabs_constants.h"
17 #include "chrome/browser/extensions/extension_function_test_utils.h" 17 #include "chrome/browser/extensions/extension_function_test_utils.h"
18 #include "chrome/browser/extensions/extension_tab_util.h" 18 #include "chrome/browser/extensions/extension_tab_util.h"
19 #include "chrome/browser/prefs/incognito_mode_prefs.h" 19 #include "chrome/browser/prefs/incognito_mode_prefs.h"
20 #include "chrome/browser/profiles/profile.h" 20 #include "chrome/browser/profiles/profile.h"
21 #include "chrome/browser/ui/browser.h" 21 #include "chrome/browser/ui/browser.h"
22 #include "chrome/browser/ui/browser_commands.h" 22 #include "chrome/browser/ui/browser_commands.h"
23 #include "chrome/browser/ui/browser_window.h" 23 #include "chrome/browser/ui/browser_window.h"
24 #include "chrome/browser/ui/tabs/tab_strip_model.h" 24 #include "chrome/browser/ui/tabs/tab_strip_model.h"
25 #include "chrome/browser/ui/zoom/chrome_zoom_level_prefs.h"
25 #include "chrome/test/base/in_process_browser_test.h" 26 #include "chrome/test/base/in_process_browser_test.h"
26 #include "chrome/test/base/ui_test_utils.h" 27 #include "chrome/test/base/ui_test_utils.h"
28 #include "content/public/browser/browser_context.h"
29 #include "content/public/browser/storage_partition.h"
27 #include "content/public/common/page_zoom.h" 30 #include "content/public/common/page_zoom.h"
28 #include "content/public/common/url_constants.h" 31 #include "content/public/common/url_constants.h"
29 #include "extensions/browser/api_test_utils.h" 32 #include "extensions/browser/api_test_utils.h"
30 #include "extensions/common/manifest_constants.h" 33 #include "extensions/common/manifest_constants.h"
31 #include "extensions/common/test_util.h" 34 #include "extensions/common/test_util.h"
32 #include "net/test/spawned_test_server/spawned_test_server.h" 35 #include "net/test/spawned_test_server/spawned_test_server.h"
33 #include "ui/gfx/geometry/rect.h" 36 #include "ui/gfx/geometry/rect.h"
34 37
35 namespace extensions { 38 namespace extensions {
36 39
(...skipping 622 matching lines...) Expand 10 before | Expand all | Expand 10 after
659 testing::AssertionResult RunGetZoom(int tab_id, double* zoom_factor); 662 testing::AssertionResult RunGetZoom(int tab_id, double* zoom_factor);
660 663
661 // Runs chrome.tabs.setZoomSettings(). 664 // Runs chrome.tabs.setZoomSettings().
662 bool RunSetZoomSettings(int tab_id, const char* mode, const char* scope); 665 bool RunSetZoomSettings(int tab_id, const char* mode, const char* scope);
663 666
664 // Runs chrome.tabs.getZoomSettings(). 667 // Runs chrome.tabs.getZoomSettings().
665 testing::AssertionResult RunGetZoomSettings(int tab_id, 668 testing::AssertionResult RunGetZoomSettings(int tab_id,
666 std::string* mode, 669 std::string* mode,
667 std::string* scope); 670 std::string* scope);
668 671
672 // Runs chrome.tabs.getZoomSettings() and returns default zoom.
673 testing::AssertionResult RunGetDefaultZoom(int tab_id,
674 double* default_zoom_factor);
675
669 // Runs chrome.tabs.setZoom(), expecting an error. 676 // Runs chrome.tabs.setZoom(), expecting an error.
670 std::string RunSetZoomExpectError(int tab_id, 677 std::string RunSetZoomExpectError(int tab_id,
671 double zoom_factor); 678 double zoom_factor);
672 679
673 // Runs chrome.tabs.setZoomSettings(), expecting an error. 680 // Runs chrome.tabs.setZoomSettings(), expecting an error.
674 std::string RunSetZoomSettingsExpectError(int tab_id, 681 std::string RunSetZoomSettingsExpectError(int tab_id,
675 const char* mode, 682 const char* mode,
676 const char* scope); 683 const char* scope);
677 684
678 content::WebContents* OpenUrlAndWaitForLoad(const GURL& url); 685 content::WebContents* OpenUrlAndWaitForLoad(const GURL& url);
679 686
680 private: 687 private:
681 scoped_refptr<Extension> extension_; 688 scoped_refptr<Extension> extension_;
682 }; 689 };
683 690
684 void ExtensionTabsZoomTest::SetUpOnMainThread() { 691 void ExtensionTabsZoomTest::SetUpOnMainThread() {
685 ExtensionTabsTest::SetUpOnMainThread(); 692 ExtensionTabsTest::SetUpOnMainThread();
686 extension_ = test_util::CreateEmptyExtension(); 693 extension_ = test_util::CreateEmptyExtension();
687 } 694 }
688 695
689 bool ExtensionTabsZoomTest::RunSetZoom(int tab_id, double zoom_factor) { 696 bool ExtensionTabsZoomTest::RunSetZoom(int tab_id, double zoom_factor) {
690 scoped_refptr<TabsSetZoomFunction> set_zoom_function( 697 scoped_refptr<TabsSetZoomFunction> set_zoom_function(
691 new TabsSetZoomFunction()); 698 new TabsSetZoomFunction());
692 set_zoom_function->set_extension(extension_.get()); 699 set_zoom_function->set_extension(extension_.get());
693 set_zoom_function->set_has_callback(true); 700 set_zoom_function->set_has_callback(true);
694 701
695 return utils::RunFunction( 702 return utils::RunFunction(
696 set_zoom_function.get(), 703 set_zoom_function.get(),
697 base::StringPrintf("[%u, %lf]", tab_id, zoom_factor), 704 base::StringPrintf("[%u, %lf]", tab_id, zoom_factor), browser(),
698 browser(),
699 extension_function_test_utils::NONE); 705 extension_function_test_utils::NONE);
700 } 706 }
701 707
702 testing::AssertionResult ExtensionTabsZoomTest::RunGetZoom( 708 testing::AssertionResult ExtensionTabsZoomTest::RunGetZoom(
703 int tab_id, 709 int tab_id,
704 double* zoom_factor) { 710 double* zoom_factor) {
705 scoped_refptr<TabsGetZoomFunction> get_zoom_function( 711 scoped_refptr<TabsGetZoomFunction> get_zoom_function(
706 new TabsGetZoomFunction()); 712 new TabsGetZoomFunction());
707 get_zoom_function->set_extension(extension_.get()); 713 get_zoom_function->set_extension(extension_.get());
708 get_zoom_function->set_has_callback(true); 714 get_zoom_function->set_has_callback(true);
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
761 767
762 if (!get_zoom_settings_result) 768 if (!get_zoom_settings_result)
763 return testing::AssertionFailure() << "no result"; 769 return testing::AssertionFailure() << "no result";
764 770
765 *mode = api_test_utils::GetString(get_zoom_settings_result.get(), "mode"); 771 *mode = api_test_utils::GetString(get_zoom_settings_result.get(), "mode");
766 *scope = api_test_utils::GetString(get_zoom_settings_result.get(), "scope"); 772 *scope = api_test_utils::GetString(get_zoom_settings_result.get(), "scope");
767 773
768 return testing::AssertionSuccess(); 774 return testing::AssertionSuccess();
769 } 775 }
770 776
777 testing::AssertionResult ExtensionTabsZoomTest::RunGetDefaultZoom(
778 int tab_id,
779 double* default_zoom_factor) {
780 DCHECK(default_zoom_factor);
781 scoped_refptr<TabsGetZoomSettingsFunction> get_zoom_settings_function(
782 new TabsGetZoomSettingsFunction());
783 get_zoom_settings_function->set_extension(extension_.get());
784 get_zoom_settings_function->set_has_callback(true);
785
786 scoped_ptr<base::DictionaryValue> get_zoom_settings_result(
787 utils::ToDictionary(utils::RunFunctionAndReturnSingleResult(
788 get_zoom_settings_function.get(),
789 base::StringPrintf("[%u]", tab_id),
790 browser())));
791
792 if (!get_zoom_settings_result)
793 return testing::AssertionFailure() << "no result";
794
795 if (!get_zoom_settings_result->GetDouble("default_zoom_factor",
796 default_zoom_factor))
797 return testing::AssertionFailure()
798 << "default zoom factor not found in result";
799
800 return testing::AssertionSuccess();
801 }
802
771 std::string ExtensionTabsZoomTest::RunSetZoomExpectError(int tab_id, 803 std::string ExtensionTabsZoomTest::RunSetZoomExpectError(int tab_id,
772 double zoom_factor) { 804 double zoom_factor) {
773 scoped_refptr<TabsSetZoomFunction> set_zoom_function( 805 scoped_refptr<TabsSetZoomFunction> set_zoom_function(
774 new TabsSetZoomFunction()); 806 new TabsSetZoomFunction());
775 set_zoom_function->set_extension(extension_.get()); 807 set_zoom_function->set_extension(extension_.get());
776 set_zoom_function->set_has_callback(true); 808 set_zoom_function->set_has_callback(true);
777 809
778 return utils::RunFunctionAndReturnError( 810 return utils::RunFunctionAndReturnError(
779 set_zoom_function.get(), 811 set_zoom_function.get(),
780 base::StringPrintf("[%u, %lf]", tab_id, zoom_factor), 812 base::StringPrintf("[%u, %lf]", tab_id, zoom_factor),
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
840 EXPECT_TRUE(RunSetZoom(tab_id, kZoomLevel)); 872 EXPECT_TRUE(RunSetZoom(tab_id, kZoomLevel));
841 EXPECT_EQ(kZoomLevel, 873 EXPECT_EQ(kZoomLevel,
842 content::ZoomLevelToZoomFactor(GetZoomLevel(web_contents))); 874 content::ZoomLevelToZoomFactor(GetZoomLevel(web_contents)));
843 875
844 // Test chrome.tabs.getZoom(). 876 // Test chrome.tabs.getZoom().
845 zoom_factor = -1; 877 zoom_factor = -1;
846 EXPECT_TRUE(RunGetZoom(tab_id, &zoom_factor)); 878 EXPECT_TRUE(RunGetZoom(tab_id, &zoom_factor));
847 EXPECT_EQ(kZoomLevel, zoom_factor); 879 EXPECT_EQ(kZoomLevel, zoom_factor);
848 } 880 }
849 881
882 IN_PROC_BROWSER_TEST_F(ExtensionTabsZoomTest, GetDefaultZoom) {
883 content::OpenURLParams params(GetOpenParams(url::kAboutBlankURL));
884 content::WebContents* web_contents = OpenUrlAndWaitForLoad(params.url);
885 int tab_id = ExtensionTabUtil::GetTabId(web_contents);
886
887 const double kZoomFactorEpsilon = 0.00001;
888
889 ui_zoom::ZoomController* zoom_controller =
890 ui_zoom::ZoomController::FromWebContents(web_contents);
891 double default_zoom_factor = -1.0;
892 EXPECT_TRUE(RunGetDefaultZoom(tab_id, &default_zoom_factor));
893 EXPECT_NEAR(zoom_controller->GetDefaultZoomLevel(),
894 content::ZoomFactorToZoomLevel(default_zoom_factor),
895 kZoomFactorEpsilon);
896
897 // Change the default zoom level and verify GetDefaultZoom returns the
898 // correct value.
899 content::StoragePartition* partition =
900 content::BrowserContext::GetStoragePartition(
901 web_contents->GetBrowserContext(), web_contents->GetSiteInstance());
902 chrome::ChromeZoomLevelPrefs* zoom_prefs =
903 static_cast<chrome::ChromeZoomLevelPrefs*>(
904 partition->GetZoomLevelDelegate());
905
906 double default_zoom_level = zoom_controller->GetDefaultZoomLevel();
907 zoom_prefs->SetDefaultZoomLevelPref(default_zoom_level + 0.5);
908 default_zoom_factor = -1.0;
909 EXPECT_TRUE(RunGetDefaultZoom(tab_id, &default_zoom_factor));
910 EXPECT_NEAR(default_zoom_level + 0.5,
911 content::ZoomFactorToZoomLevel(default_zoom_factor),
912 kZoomFactorEpsilon);
913 }
914
915 IN_PROC_BROWSER_TEST_F(ExtensionTabsZoomTest, SetToDefaultZoom) {
916 content::OpenURLParams params(GetOpenParams(url::kAboutBlankURL));
917 content::WebContents* web_contents = OpenUrlAndWaitForLoad(params.url);
918 int tab_id = ExtensionTabUtil::GetTabId(web_contents);
919
920 const double kZoomFactorEpsilon = 0.00001;
921
922 auto zoom_controller = ui_zoom::ZoomController::FromWebContents(web_contents);
not at google - send to devlin 2015/04/01 22:26:12 Same comments apply to this method as apply to the
wjmaclean 2015/04/02 12:03:14 Done.
923 double default_zoom_level = zoom_controller->GetDefaultZoomLevel();
924 double new_default_zoom_level = default_zoom_level + 0.42;
925
926 content::StoragePartition* partition =
927 content::BrowserContext::GetStoragePartition(
928 web_contents->GetBrowserContext(), web_contents->GetSiteInstance());
929 chrome::ChromeZoomLevelPrefs* zoom_prefs =
930 static_cast<chrome::ChromeZoomLevelPrefs*>(
931 partition->GetZoomLevelDelegate());
932
933 zoom_prefs->SetDefaultZoomLevelPref(new_default_zoom_level);
934
935 double observed_zoom_factor = -1.0;
936 EXPECT_TRUE(RunSetZoom(tab_id, 0.0));
937 EXPECT_TRUE(RunGetZoom(tab_id, &observed_zoom_factor));
938 EXPECT_NEAR(new_default_zoom_level,
939 content::ZoomFactorToZoomLevel(observed_zoom_factor),
940 kZoomFactorEpsilon);
941 }
942
850 IN_PROC_BROWSER_TEST_F(ExtensionTabsZoomTest, ZoomSettings) { 943 IN_PROC_BROWSER_TEST_F(ExtensionTabsZoomTest, ZoomSettings) {
851 // In this test we need two URLs that (1) represent real pages (i.e. they 944 // In this test we need two URLs that (1) represent real pages (i.e. they
852 // load without causing an error page load), (2) have different domains, and 945 // load without causing an error page load), (2) have different domains, and
853 // (3) are zoomable by the extension API (this last condition rules out 946 // (3) are zoomable by the extension API (this last condition rules out
854 // chrome:// urls). We achieve this by noting that about:blank meets these 947 // chrome:// urls). We achieve this by noting that about:blank meets these
855 // requirements, allowing us to spin up a spawned http server on localhost to 948 // requirements, allowing us to spin up a spawned http server on localhost to
856 // get the other domain. 949 // get the other domain.
857 net::SpawnedTestServer http_server( 950 net::SpawnedTestServer http_server(
858 net::SpawnedTestServer::TYPE_HTTP, 951 net::SpawnedTestServer::TYPE_HTTP,
859 net::SpawnedTestServer::kLocalhost, 952 net::SpawnedTestServer::kLocalhost,
(...skipping 134 matching lines...) Expand 10 before | Expand all | Expand 10 after
994 // Test chrome.tabs.setZoom(). 1087 // Test chrome.tabs.setZoom().
995 error = RunSetZoomExpectError(tab_id, 3.14159); 1088 error = RunSetZoomExpectError(tab_id, 3.14159);
996 EXPECT_TRUE(MatchPattern(error, manifest_errors::kCannotAccessChromeUrl)); 1089 EXPECT_TRUE(MatchPattern(error, manifest_errors::kCannotAccessChromeUrl));
997 1090
998 // chrome.tabs.setZoomSettings(). 1091 // chrome.tabs.setZoomSettings().
999 error = RunSetZoomSettingsExpectError(tab_id, "manual", "per-tab"); 1092 error = RunSetZoomSettingsExpectError(tab_id, "manual", "per-tab");
1000 EXPECT_TRUE(MatchPattern(error, manifest_errors::kCannotAccessChromeUrl)); 1093 EXPECT_TRUE(MatchPattern(error, manifest_errors::kCannotAccessChromeUrl));
1001 } 1094 }
1002 1095
1003 } // namespace extensions 1096 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/extensions/api/tabs/tabs_api.cc ('k') | chrome/common/extensions/api/tabs.json » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698