diff options
Diffstat (limited to 'chrome_frame/test/net/test_automation_provider.h')
-rw-r--r-- | chrome_frame/test/net/test_automation_provider.h | 52 |
1 files changed, 52 insertions, 0 deletions
diff --git a/chrome_frame/test/net/test_automation_provider.h b/chrome_frame/test/net/test_automation_provider.h new file mode 100644 index 0000000..75830ba --- /dev/null +++ b/chrome_frame/test/net/test_automation_provider.h @@ -0,0 +1,52 @@ +// Copyright (c) 2009 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. +#ifndef CHROME_FRAME_TEST_NET_TEST_AUTOMATION_PROVIDER_H_ +#define CHROME_FRAME_TEST_NET_TEST_AUTOMATION_PROVIDER_H_ + +#include "chrome/browser/automation/automation_provider.h" + +class TestAutomationResourceMessageFilter; + +// Callback interface for TestAutomationProvider. +class TestAutomationProviderDelegate { + public: + virtual void OnInitialTabLoaded() = 0; +}; + +// A slightly customized version of AutomationProvider. +// We override AutomationProvider to be able to filter received messages +// (see TestAutomationResourceMessageFilter) and know when the initial +// ExternalTab has been loaded. +// In order to intercept UrlRequests and make the URLRequestAutomationJob class +// handle requests from unit tests, we also implement URLRequest::Interceptor. +class TestAutomationProvider + : public AutomationProvider, + public URLRequest::Interceptor { + public: + explicit TestAutomationProvider(Profile* profile, + TestAutomationProviderDelegate* delegate); + + virtual ~TestAutomationProvider(); + + // AutomationProvider overrides. + virtual void OnMessageReceived(const IPC::Message& msg); + virtual bool Send(IPC::Message* msg); + + // URLRequest::Interceptor. + virtual URLRequestJob* MaybeIntercept(URLRequest* request); + + // Call to instantiate and initialize a new instance of + // TestAutomationProvider. + static TestAutomationProvider* NewAutomationProvider( + Profile* p, + const std::string& channel, + TestAutomationProviderDelegate* delegate); + + protected: + scoped_refptr<TestAutomationResourceMessageFilter> filter_; + int tab_handle_; + TestAutomationProviderDelegate* delegate_; +}; + +#endif CHROME_FRAME_TEST_NET_TEST_AUTOMATION_PROVIDER_H_ |