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

Unified Diff: chrome_frame/test/net/fake_external_tab.h

Issue 8894008: Make CF net tests a content::BrowserMainParts. (Closed) Base URL: ssh://joi@192.168.1.201/home/joi/c/chrome/src@cfnettests
Patch Set: Mostly functional, but needs polish. Created 9 years 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_frame/test/net/fake_external_tab.h
diff --git a/chrome_frame/test/net/fake_external_tab.h b/chrome_frame/test/net/fake_external_tab.h
index e3eb6b147f732643b46fff9d065eecce48b2bdf8..44018a71e31f6dbe2ed50d77bed52789fedb4b79 100644
--- a/chrome_frame/test/net/fake_external_tab.h
+++ b/chrome_frame/test/net/fake_external_tab.h
@@ -10,6 +10,7 @@
#include "base/file_path.h"
#include "base/message_loop.h"
+#include "base/process.h"
#include "base/win/scoped_handle.h"
#include "chrome/app/scoped_ole_initializer.h"
#include "chrome/browser/browser_process_impl.h"
@@ -17,7 +18,8 @@
#include "chrome_frame/test/net/test_automation_provider.h"
#include "chrome_frame/test/test_server.h"
#include "chrome_frame/test_utils.h"
-#include "content/test/test_browser_thread.h"
+#include "content/public/browser/browser_main_parts.h"
+#include "content/public/browser/browser_thread.h"
#include "net/base/net_test_suite.h"
class ProcessSingleton;
@@ -39,27 +41,31 @@ class FakeExternalTab {
return user_data_dir_;
}
- MessageLoopForUI* ui_loop() {
- return &loop_;
- }
-
protected:
- MessageLoopForUI loop_;
scoped_ptr<BrowserProcess> browser_process_;
FilePath overridden_user_dir_;
FilePath user_data_dir_;
scoped_ptr<ProcessSingleton> process_singleton_;
scoped_ptr<content::NotificationService> notificaton_service_;
+
+ DISALLOW_COPY_AND_ASSIGN(FakeExternalTab);
};
// The "master class" that spins the UI and test threads.
+//
+// In this weird test executable that pretends to almost be Chrome, it
+// plays a similar role to ChromeBrowserMainParts, and must fulfill
+// the existing contract between ChromeBrowserMainParts and
+// BrowserProcessImpl, i.e. poking BrowserProcessImpl at certain
+// lifetime events.
class CFUrlRequestUnittestRunner
: public NetTestSuite,
public ProcessSingletonSubclassDelegate,
- public TestAutomationProviderDelegate {
+ public TestAutomationProviderDelegate,
+ public content::BrowserMainParts {
public:
CFUrlRequestUnittestRunner(int argc, char** argv);
- ~CFUrlRequestUnittestRunner();
+ virtual ~CFUrlRequestUnittestRunner();
virtual void StartChromeFrameInHostBrowser();
@@ -76,8 +82,6 @@ class CFUrlRequestUnittestRunner
// TestAutomationProviderDelegate.
virtual void OnInitialTabLoaded();
- void RunMainUIThread();
-
void StartTests();
// Borrowed from TestSuite::Initialize().
@@ -87,6 +91,27 @@ class CFUrlRequestUnittestRunner
return test_result_;
}
+ void set_crash_service(base::ProcessHandle handle) {
+ crash_service_ = handle;
+ }
+
+ // content::BrowserMainParts implementation.
+ virtual void PreEarlyInitialization() OVERRIDE;
+ virtual void PostEarlyInitialization() OVERRIDE {}
+ virtual void PreMainMessageLoopStart() OVERRIDE {}
+ virtual void PostMainMessageLoopStart() OVERRIDE {}
+ virtual void ToolkitInitialized() OVERRIDE {}
+ virtual void PreCreateThreads() OVERRIDE;
+ virtual void PreStartThread(content::BrowserThread::ID identifier) OVERRIDE;
+ virtual void PostStartThread(
+ content::BrowserThread::ID identifier) OVERRIDE;
+ virtual void PreMainMessageLoopRun() OVERRIDE;
+ virtual bool MainMessageLoopRun(int* result_code) OVERRIDE;
+ virtual void PostMainMessageLoopRun() OVERRIDE;
+ virtual void PreStopThread(content::BrowserThread::ID identifier) OVERRIDE;
+ virtual void PostStopThread(content::BrowserThread::ID identifier) OVERRIDE;
+ virtual void PostDestroyThreads() OVERRIDE;
+
protected:
// This is the thread that runs all the UrlRequest tests.
// Within its context, the Initialize() and Shutdown() routines above
@@ -97,24 +122,19 @@ class CFUrlRequestUnittestRunner
protected:
base::win::ScopedHandle test_thread_;
+ base::ProcessHandle crash_service_;
DWORD test_thread_id_;
scoped_ptr<test_server::SimpleWebServer> test_http_server_;
test_server::SimpleResponse chrome_frame_html_;
- // The fake chrome instance. This instance owns the UI message loop
- // on the main thread.
- FakeExternalTab fake_chrome_;
+ // The fake chrome instance.
+ scoped_ptr<FakeExternalTab> fake_chrome_;
scoped_ptr<ProcessSingletonSubclass> pss_subclass_;
- scoped_ptr<content::TestBrowserThread> main_thread_;
ScopedChromeFrameRegistrar registrar_;
int test_result_;
- // TODO(joi): This should be fixed so that this test executable uses
- // content::BrowserMainParts. As it stands it is a horrible hack.
- scoped_ptr<content::TestBrowserThread> db_thread_;
- scoped_ptr<content::TestBrowserThread> file_thread_;
- scoped_ptr<content::TestBrowserThread> io_thread_;
+ DISALLOW_COPY_AND_ASSIGN(CFUrlRequestUnittestRunner);
};
#endif // CHROME_FRAME_TEST_NET_FAKE_EXTERNAL_TAB_H_

Powered by Google App Engine
This is Rietveld 408576698