Index: ios/web/app/web_main_loop.h |
diff --git a/ios/web/app/web_main_loop.h b/ios/web/app/web_main_loop.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..8fd9178efabe667792249f28985f3e06e9aad00b |
--- /dev/null |
+++ b/ios/web/app/web_main_loop.h |
@@ -0,0 +1,99 @@ |
+// Copyright 2014 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 IOS_WEB_APP_WEB_MAIN_LOOP_H_ |
+#define IOS_WEB_APP_WEB_MAIN_LOOP_H_ |
+ |
+#include "base/basictypes.h" |
+#include "base/memory/ref_counted.h" |
+#include "base/memory/scoped_ptr.h" |
+ |
+namespace base { |
+class CommandLine; |
+class FilePath; |
+class MessageLoop; |
+class PowerMonitor; |
+class SystemMonitor; |
+} // namespace base |
+ |
+namespace net { |
+class NetworkChangeNotifier; |
+} // namespace net |
+ |
+namespace web { |
+class CookieNotificationBridge; |
+class WebMainParts; |
+class WebThreadImpl; |
+ |
+// Implements the main web loop stages called from WebMainRunner. |
+// See comments in web_main_parts.h for additional info. |
+class WebMainLoop { |
+ public: |
+ explicit WebMainLoop(); |
+ virtual ~WebMainLoop(); |
+ |
+ void Init(); |
+ |
+ void EarlyInitialization(); |
+ void MainMessageLoopStart(); |
+ |
+ // Creates and starts running the tasks needed to complete startup. |
+ void CreateStartupTasks(); |
+ |
+ // Performs the shutdown sequence, starting with PostMainMessageLoopRun |
+ // through stopping threads to PostDestroyThreads. |
+ void ShutdownThreadsAndCleanUp(); |
+ |
+ int GetResultCode() const { return result_code_; } |
+ |
+ private: |
+ void InitializeMainThread(); |
+ |
+ // Called just before creating the threads |
+ int PreCreateThreads(); |
+ |
+ // Creates all secondary threads. |
+ int CreateThreads(); |
+ |
+ // Called right after the web threads have been started. |
+ int WebThreadsStarted(); |
+ |
+ // Called just before attaching to the main message loop. |
+ int PreMainMessageLoopRun(); |
+ |
+ // Members initialized on construction --------------------------------------- |
+ int result_code_; |
+ // True if the non-UI threads were created. |
+ bool created_threads_; |
+ |
+ // Members initialized in |MainMessageLoopStart()| --------------------------- |
+ scoped_ptr<base::MessageLoop> main_message_loop_; |
+ scoped_ptr<base::SystemMonitor> system_monitor_; |
+ scoped_ptr<base::PowerMonitor> power_monitor_; |
+ scoped_ptr<net::NetworkChangeNotifier> network_change_notifier_; |
+ |
+ // Destroy parts_ before main_message_loop_ (required) and before other |
+ // classes constructed in web (but after main_thread_). |
+ scoped_ptr<WebMainParts> parts_; |
+ |
+ // Members initialized in |InitializeMainThread()| --------------------------- |
+ // This must get destroyed before other threads that are created in parts_. |
+ scoped_ptr<WebThreadImpl> main_thread_; |
+ |
+ // Members initialized in |RunMainMessageLoopParts()| ------------------------ |
+ scoped_ptr<WebThreadImpl> db_thread_; |
+ scoped_ptr<WebThreadImpl> file_user_blocking_thread_; |
+ scoped_ptr<WebThreadImpl> file_thread_; |
+ scoped_ptr<WebThreadImpl> cache_thread_; |
+ scoped_ptr<WebThreadImpl> io_thread_; |
+ |
+ // Members initialized in |WebThreadsStarted()| -------------------------- |
+ scoped_ptr<CookieNotificationBridge> cookie_notification_bridge_; |
+ |
+ DISALLOW_COPY_AND_ASSIGN(WebMainLoop); |
+}; |
+ |
+} // namespace web |
+ |
+#endif // IOS_WEB_APP_WEB_MAIN_LOOP_H_ |