Index: chrome/browser/extensions/api/tabs/tabs_test.cc |
diff --git a/chrome/browser/extensions/api/tabs/tabs_test.cc b/chrome/browser/extensions/api/tabs/tabs_test.cc |
index 38309a6a13404ec1b909ac5565e8a24fb4b30bcc..a2fa39a8457e9719be5e5cea9fdfca0929902465 100644 |
--- a/chrome/browser/extensions/api/tabs/tabs_test.cc |
+++ b/chrome/browser/extensions/api/tabs/tabs_test.cc |
@@ -22,8 +22,11 @@ |
#include "chrome/browser/ui/browser_commands.h" |
#include "chrome/browser/ui/browser_window.h" |
#include "chrome/browser/ui/tabs/tab_strip_model.h" |
+#include "chrome/browser/ui/zoom/chrome_zoom_level_prefs.h" |
#include "chrome/test/base/in_process_browser_test.h" |
#include "chrome/test/base/ui_test_utils.h" |
+#include "content/public/browser/browser_context.h" |
+#include "content/public/browser/storage_partition.h" |
#include "content/public/common/page_zoom.h" |
#include "content/public/common/url_constants.h" |
#include "extensions/browser/api_test_utils.h" |
@@ -666,6 +669,10 @@ class ExtensionTabsZoomTest : public ExtensionTabsTest { |
std::string* mode, |
std::string* scope); |
+ // Runs chrome.tabs.getZoomSettings() and returns default zoom. |
+ testing::AssertionResult RunGetDefaultZoom(int tab_id, |
+ double* default_zoom_factor); |
+ |
// Runs chrome.tabs.setZoom(), expecting an error. |
std::string RunSetZoomExpectError(int tab_id, |
double zoom_factor); |
@@ -694,8 +701,7 @@ bool ExtensionTabsZoomTest::RunSetZoom(int tab_id, double zoom_factor) { |
return utils::RunFunction( |
set_zoom_function.get(), |
- base::StringPrintf("[%u, %lf]", tab_id, zoom_factor), |
- browser(), |
+ base::StringPrintf("[%u, %lf]", tab_id, zoom_factor), browser(), |
extension_function_test_utils::NONE); |
} |
@@ -768,6 +774,32 @@ testing::AssertionResult ExtensionTabsZoomTest::RunGetZoomSettings( |
return testing::AssertionSuccess(); |
} |
+testing::AssertionResult ExtensionTabsZoomTest::RunGetDefaultZoom( |
+ int tab_id, |
+ double* default_zoom_factor) { |
+ DCHECK(default_zoom_factor); |
+ scoped_refptr<TabsGetZoomSettingsFunction> get_zoom_settings_function( |
+ new TabsGetZoomSettingsFunction()); |
+ get_zoom_settings_function->set_extension(extension_.get()); |
+ get_zoom_settings_function->set_has_callback(true); |
+ |
+ scoped_ptr<base::DictionaryValue> get_zoom_settings_result( |
+ utils::ToDictionary(utils::RunFunctionAndReturnSingleResult( |
+ get_zoom_settings_function.get(), |
+ base::StringPrintf("[%u]", tab_id), |
+ browser()))); |
+ |
+ if (!get_zoom_settings_result) |
+ return testing::AssertionFailure() << "no result"; |
+ |
+ if (!get_zoom_settings_result->GetDouble("default_zoom_factor", |
+ default_zoom_factor)) |
+ return testing::AssertionFailure() |
+ << "default zoom factor not found in result"; |
+ |
+ return testing::AssertionSuccess(); |
+} |
+ |
std::string ExtensionTabsZoomTest::RunSetZoomExpectError(int tab_id, |
double zoom_factor) { |
scoped_refptr<TabsSetZoomFunction> set_zoom_function( |
@@ -847,6 +879,67 @@ IN_PROC_BROWSER_TEST_F(ExtensionTabsZoomTest, SetAndGetZoom) { |
EXPECT_EQ(kZoomLevel, zoom_factor); |
} |
+IN_PROC_BROWSER_TEST_F(ExtensionTabsZoomTest, GetDefaultZoom) { |
+ content::OpenURLParams params(GetOpenParams(url::kAboutBlankURL)); |
+ content::WebContents* web_contents = OpenUrlAndWaitForLoad(params.url); |
+ int tab_id = ExtensionTabUtil::GetTabId(web_contents); |
+ |
+ const double kZoomFactorEpsilon = 0.00001; |
+ |
+ ui_zoom::ZoomController* zoom_controller = |
+ ui_zoom::ZoomController::FromWebContents(web_contents); |
+ double default_zoom_factor = -1.0; |
+ EXPECT_TRUE(RunGetDefaultZoom(tab_id, &default_zoom_factor)); |
+ EXPECT_NEAR(zoom_controller->GetDefaultZoomLevel(), |
+ content::ZoomFactorToZoomLevel(default_zoom_factor), |
+ kZoomFactorEpsilon); |
+ |
+ // Change the default zoom level and verify GetDefaultZoom returns the |
+ // correct value. |
+ content::StoragePartition* partition = |
+ content::BrowserContext::GetStoragePartition( |
+ web_contents->GetBrowserContext(), web_contents->GetSiteInstance()); |
+ chrome::ChromeZoomLevelPrefs* zoom_prefs = |
+ static_cast<chrome::ChromeZoomLevelPrefs*>( |
+ partition->GetZoomLevelDelegate()); |
+ |
+ double default_zoom_level = zoom_controller->GetDefaultZoomLevel(); |
+ zoom_prefs->SetDefaultZoomLevelPref(default_zoom_level + 0.5); |
+ default_zoom_factor = -1.0; |
+ EXPECT_TRUE(RunGetDefaultZoom(tab_id, &default_zoom_factor)); |
+ EXPECT_NEAR(default_zoom_level + 0.5, |
+ content::ZoomFactorToZoomLevel(default_zoom_factor), |
+ kZoomFactorEpsilon); |
+} |
+ |
+IN_PROC_BROWSER_TEST_F(ExtensionTabsZoomTest, SetToDefaultZoom) { |
+ content::OpenURLParams params(GetOpenParams(url::kAboutBlankURL)); |
+ content::WebContents* web_contents = OpenUrlAndWaitForLoad(params.url); |
+ int tab_id = ExtensionTabUtil::GetTabId(web_contents); |
+ |
+ const double kZoomFactorEpsilon = 0.00001; |
+ |
+ 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.
|
+ double default_zoom_level = zoom_controller->GetDefaultZoomLevel(); |
+ double new_default_zoom_level = default_zoom_level + 0.42; |
+ |
+ content::StoragePartition* partition = |
+ content::BrowserContext::GetStoragePartition( |
+ web_contents->GetBrowserContext(), web_contents->GetSiteInstance()); |
+ chrome::ChromeZoomLevelPrefs* zoom_prefs = |
+ static_cast<chrome::ChromeZoomLevelPrefs*>( |
+ partition->GetZoomLevelDelegate()); |
+ |
+ zoom_prefs->SetDefaultZoomLevelPref(new_default_zoom_level); |
+ |
+ double observed_zoom_factor = -1.0; |
+ EXPECT_TRUE(RunSetZoom(tab_id, 0.0)); |
+ EXPECT_TRUE(RunGetZoom(tab_id, &observed_zoom_factor)); |
+ EXPECT_NEAR(new_default_zoom_level, |
+ content::ZoomFactorToZoomLevel(observed_zoom_factor), |
+ kZoomFactorEpsilon); |
+} |
+ |
IN_PROC_BROWSER_TEST_F(ExtensionTabsZoomTest, ZoomSettings) { |
// In this test we need two URLs that (1) represent real pages (i.e. they |
// load without causing an error page load), (2) have different domains, and |