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

Unified Diff: chrome/browser/printing/print_dialog_cloud_uitest.cc

Issue 9873013: Move PrintDialogCloud.HandlersRegistered test to interactive_ui_tests (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « chrome/browser/printing/print_dialog_cloud_interative_uitest.cc ('k') | chrome/chrome_tests.gypi » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/printing/print_dialog_cloud_uitest.cc
diff --git a/chrome/browser/printing/print_dialog_cloud_uitest.cc b/chrome/browser/printing/print_dialog_cloud_uitest.cc
deleted file mode 100644
index 9ae5e52fb031483bc7daecc1add9674a3032f73c..0000000000000000000000000000000000000000
--- a/chrome/browser/printing/print_dialog_cloud_uitest.cc
+++ /dev/null
@@ -1,264 +0,0 @@
-// Copyright (c) 2012 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/printing/print_dialog_cloud.h"
-#include "chrome/browser/printing/print_dialog_cloud_internal.h"
-
-#include <functional>
-
-#include "base/bind.h"
-#include "base/file_path.h"
-#include "base/file_util.h"
-#include "base/memory/singleton.h"
-#include "base/path_service.h"
-#include "base/threading/thread_restrictions.h"
-#include "base/utf_string_conversions.h"
-#include "base/values.h"
-#include "chrome/browser/printing/cloud_print/cloud_print_url.h"
-#include "chrome/browser/ui/browser_list.h"
-#include "chrome/browser/ui/browser_window.h"
-#include "chrome/browser/ui/webui/chrome_url_data_manager.h"
-#include "chrome/common/chrome_paths.h"
-#include "chrome/common/url_constants.h"
-#include "chrome/test/base/in_process_browser_test.h"
-#include "chrome/test/base/ui_test_utils.h"
-#include "content/public/browser/notification_service.h"
-#include "content/public/browser/notification_types.h"
-#include "content/public/browser/render_view_host.h"
-#include "content/public/browser/web_contents.h"
-#include "content/test/test_browser_thread.h"
-#include "net/url_request/url_request_filter.h"
-#include "net/url_request/url_request_test_job.h"
-#include "net/url_request/url_request_test_util.h"
-#include "ui/ui_controls/ui_controls.h"
-
-using content::BrowserThread;
-
-namespace {
-
-class TestData {
- public:
- static TestData* GetInstance() {
- return Singleton<TestData>::get();
- }
-
- const char* GetTestData() {
- // Fetching this data blocks the IO thread, but we don't really care because
- // this is a test.
- base::ThreadRestrictions::ScopedAllowIO allow_io;
-
- if (test_data_.empty()) {
- FilePath test_data_directory;
- PathService::Get(chrome::DIR_TEST_DATA, &test_data_directory);
- FilePath test_file =
- test_data_directory.AppendASCII("printing/cloud_print_uitest.html");
- file_util::ReadFileToString(test_file, &test_data_);
- }
- return test_data_.c_str();
- }
- private:
- TestData() {}
-
- std::string test_data_;
-
- friend struct DefaultSingletonTraits<TestData>;
-};
-
-// A simple test net::URLRequestJob. We don't care what it does, only that
-// whether it starts and finishes.
-class SimpleTestJob : public net::URLRequestTestJob {
- public:
- explicit SimpleTestJob(net::URLRequest* request)
- : net::URLRequestTestJob(request, test_headers(),
- TestData::GetInstance()->GetTestData(), true) {}
-
- virtual void GetResponseInfo(net::HttpResponseInfo* info) {
- net::URLRequestTestJob::GetResponseInfo(info);
- if (request_->url().SchemeIsSecure()) {
- // Make up a fake certificate for this response since we don't have
- // access to the real SSL info.
- const char* kCertIssuer = "Chrome Internal";
- const int kLifetimeDays = 100;
-
- info->ssl_info.cert =
- new net::X509Certificate(request_->url().GetWithEmptyPath().spec(),
- kCertIssuer,
- base::Time::Now(),
- base::Time::Now() +
- base::TimeDelta::FromDays(kLifetimeDays));
- info->ssl_info.cert_status = 0;
- info->ssl_info.security_bits = -1;
- }
- }
-
- private:
- ~SimpleTestJob() {}
-};
-
-class TestController {
- public:
- static TestController* GetInstance() {
- return Singleton<TestController>::get();
- }
- void set_result(bool value) {
- result_ = value;
- }
- bool result() {
- return result_;
- }
- void set_expected_url(const GURL& url) {
- expected_url_ = url;
- }
- const GURL expected_url() {
- return expected_url_;
- }
- void set_delegate(TestDelegate* delegate) {
- delegate_ = delegate;
- }
- TestDelegate* delegate() {
- return delegate_;
- }
- void set_use_delegate(bool value) {
- use_delegate_ = value;
- }
- bool use_delegate() {
- return use_delegate_;
- }
- private:
- TestController()
- : result_(false),
- use_delegate_(false),
- delegate_(NULL) {}
-
- bool result_;
- bool use_delegate_;
- GURL expected_url_;
- TestDelegate* delegate_;
-
- friend struct DefaultSingletonTraits<TestController>;
-};
-
-} // namespace
-
-class PrintDialogCloudTest : public InProcessBrowserTest {
- public:
- PrintDialogCloudTest() : handler_added_(false) {
- PathService::Get(chrome::DIR_TEST_DATA, &test_data_directory_);
- }
-
- // Must be static for handing into AddHostnameHandler.
- static net::URLRequest::ProtocolFactory Factory;
-
- class AutoQuitDelegate : public TestDelegate {
- public:
- AutoQuitDelegate() {}
-
- virtual void OnResponseCompleted(net::URLRequest* request) {
- BrowserThread::PostTask(BrowserThread::UI, FROM_HERE,
- MessageLoop::QuitClosure());
- }
- };
-
- virtual void SetUp() {
- TestController::GetInstance()->set_result(false);
- InProcessBrowserTest::SetUp();
- }
-
- virtual void TearDown() {
- if (handler_added_) {
- net::URLRequestFilter* filter = net::URLRequestFilter::GetInstance();
- filter->RemoveHostnameHandler(scheme_, host_name_);
- handler_added_ = false;
- TestController::GetInstance()->set_delegate(NULL);
- }
- InProcessBrowserTest::TearDown();
- }
-
- // Normally this is something I would expect could go into SetUp(),
- // but there seems to be some timing or ordering related issue with
- // the test harness that made that flaky. Calling this from the
- // individual test functions seems to fix that.
- void AddTestHandlers() {
- if (!handler_added_) {
- net::URLRequestFilter* filter = net::URLRequestFilter::GetInstance();
- GURL cloud_print_service_url =
- CloudPrintURL(browser()->profile()).
- GetCloudPrintServiceURL();
- scheme_ = cloud_print_service_url.scheme();
- host_name_ = cloud_print_service_url.host();
- filter->AddHostnameHandler(scheme_, host_name_,
- &PrintDialogCloudTest::Factory);
- handler_added_ = true;
-
- GURL cloud_print_dialog_url =
- CloudPrintURL(browser()->profile()).
- GetCloudPrintServiceDialogURL();
- TestController::GetInstance()->set_expected_url(cloud_print_dialog_url);
- TestController::GetInstance()->set_delegate(&delegate_);
- }
-
- CreateDialogForTest();
- }
-
- void CreateDialogForTest() {
- FilePath path_to_pdf =
- test_data_directory_.AppendASCII("printing/cloud_print_uitest.pdf");
- BrowserThread::PostTask(
- BrowserThread::UI, FROM_HERE,
- base::Bind(&internal_cloud_print_helpers::CreateDialogFullImpl,
- path_to_pdf, string16(), string16(),
- std::string("application/pdf"), true, false));
- }
-
- bool handler_added_;
- std::string scheme_;
- std::string host_name_;
- FilePath test_data_directory_;
- AutoQuitDelegate delegate_;
-};
-
-net::URLRequestJob* PrintDialogCloudTest::Factory(net::URLRequest* request,
- const std::string& scheme) {
- if (request &&
- (request->url() == TestController::GetInstance()->expected_url())) {
- if (TestController::GetInstance()->use_delegate())
- request->set_delegate(TestController::GetInstance()->delegate());
- TestController::GetInstance()->set_result(true);
- return new SimpleTestJob(request);
- }
- return new net::URLRequestTestJob(request,
- net::URLRequestTestJob::test_headers(),
- "", true);
-}
-
-IN_PROC_BROWSER_TEST_F(PrintDialogCloudTest, HandlersRegistered) {
- BrowserList::SetLastActive(browser());
- ASSERT_TRUE(BrowserList::GetLastActive());
-
- AddTestHandlers();
-
- TestController::GetInstance()->set_use_delegate(true);
-
- ui_test_utils::RunMessageLoop();
-
- ASSERT_TRUE(TestController::GetInstance()->result());
-
- // Close the dialog before finishing the test.
- ui_test_utils::WindowedNotificationObserver tab_closed_observer(
- content::NOTIFICATION_TAB_CLOSED,
- content::NotificationService::AllSources());
-
- // Can't use ui_test_utils::SendKeyPressSync or
- // ui_test_utils::SendKeyPressAndWait due to a race condition with closing
- // the window. See http://crbug.com/111269
- BrowserWindow* window = browser()->window();
- ASSERT_TRUE(window);
- gfx::NativeWindow native_window = window->GetNativeHandle();
- ASSERT_TRUE(native_window);
- bool key_sent = ui_controls::SendKeyPress(native_window, ui::VKEY_ESCAPE,
- false, false, false, false);
- EXPECT_TRUE(key_sent);
- if (key_sent)
- tab_closed_observer.Wait();
-}
« no previous file with comments | « chrome/browser/printing/print_dialog_cloud_interative_uitest.cc ('k') | chrome/chrome_tests.gypi » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698