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

Unified Diff: chrome/browser/ui/webui/settings/downloads_handler_unittest.cc

Issue 2711823002: MD Settings: Add "Auto Open" setting to Downloads C++ handler. (Closed)
Patch Set: Created 3 years, 10 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/webui/settings/downloads_handler_unittest.cc
diff --git a/chrome/browser/ui/webui/settings/downloads_handler_unittest.cc b/chrome/browser/ui/webui/settings/downloads_handler_unittest.cc
new file mode 100644
index 0000000000000000000000000000000000000000..a47a8012d5ae0fe014557ed0911c1bc5afef154f
--- /dev/null
+++ b/chrome/browser/ui/webui/settings/downloads_handler_unittest.cc
@@ -0,0 +1,84 @@
+// Copyright 2017 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#include "chrome/browser/ui/webui/settings/downloads_handler.h"
+
+#include "chrome/browser/download/chrome_download_manager_delegate.h"
+#include "chrome/browser/download/download_prefs.h"
+#include "chrome/common/pref_names.h"
+#include "chrome/test/base/testing_profile.h"
+#include "components/prefs/pref_service.h"
+#include "content/public/browser/web_ui.h"
+#include "content/public/test/mock_download_manager.h"
+#include "content/public/test/test_browser_thread_bundle.h"
+#include "content/public/test/test_web_ui.h"
+#include "testing/gtest/include/gtest/gtest.h"
+
+namespace settings {
+
+class DownloadsHandlerTest : public testing::Test {
+ public:
+ DownloadsHandlerTest()
+ : download_manager_(new content::MockDownloadManager()),
+ chrome_download_manager_delegate_(&profile_),
+ handler_(&profile_) {
+ content::BrowserContext::SetDownloadManagerForTesting(&profile_,
+ download_manager_);
+ EXPECT_EQ(download_manager_,
+ content::BrowserContext::GetDownloadManager(&profile_));
+
+ EXPECT_CALL(*download_manager_, GetDelegate())
+ .WillRepeatedly(testing::Return(&chrome_download_manager_delegate_));
+ EXPECT_CALL(*download_manager_, Shutdown());
+
+ handler_.set_web_ui(&test_web_ui_);
+ }
+
+ void SetUp() override {
+ EXPECT_TRUE(test_web_ui_.call_data().empty());
+
+ base::ListValue args;
+ handler()->HandleInitialize(&args);
+
+ EXPECT_TRUE(handler()->IsJavascriptAllowed());
+ VerifyAutoOpenDownloadsChangedCallback();
+
+ test_web_ui_.ClearTrackedCalls();
+ }
+
+ void VerifyAutoOpenDownloadsChangedCallback() {
+ EXPECT_EQ(1u, test_web_ui_.call_data().size());
+
+ auto& data = *(test_web_ui_.call_data().back());
+ EXPECT_EQ("cr.webUIListenerCallback", data.function_name());
+ std::string event;
+ ASSERT_TRUE(data.arg1()->GetAsString(&event));
+ EXPECT_EQ("auto-open-downloads-changed", event);
+ bool auto_open_downloads = false;
+ ASSERT_TRUE(data.arg2()->GetAsBoolean(&auto_open_downloads));
+ EXPECT_FALSE(auto_open_downloads);
+ }
+
+ Profile* profile() { return &profile_; }
+ DownloadsHandler* handler() { return &handler_; }
+
+ private:
+ content::TestBrowserThreadBundle thread_bundle_;
+ content::TestWebUI test_web_ui_;
+ TestingProfile profile_;
+
+ // Must be allocated on the heap for proper shutdown.
Dan Beam 2017/02/23 03:06:32 why is this? shouldn't these be fairly easy to de
tommycli 2017/02/24 19:02:41 Hey I updated the comment. This object is destroye
+ content::MockDownloadManager* download_manager_;
+ ChromeDownloadManagerDelegate chrome_download_manager_delegate_;
+
+ DownloadsHandler handler_;
+};
+
+TEST_F(DownloadsHandlerTest, AutoOpenDownloads) {
+ // Touch the pref.
+ profile()->GetPrefs()->SetString(prefs::kDownloadExtensionsToOpen, "");
+ VerifyAutoOpenDownloadsChangedCallback();
+}
+
+} // namespace settings

Powered by Google App Engine
This is Rietveld 408576698