Prevent duplicated call of |Terminate|
[platform/framework/web/crosswalk-tizen.git] / runtime / browser / web_application.h
index d0af1aa..f35fd04 100755 (executable)
@@ -41,6 +41,9 @@ class WebApplication : public WebView::EventListener {
  public:
   WebApplication(NativeWindow* window,
                  common::ApplicationData* app_data);
+  WebApplication(NativeWindow* window,
+                 common::ApplicationData* app_data,
+                 Ewk_Context* context);
   virtual ~WebApplication();
 
   void AppControl(std::unique_ptr<common::AppControl> appcontrol);
@@ -49,11 +52,16 @@ class WebApplication : public WebView::EventListener {
   void Suspend();
   void Terminate();
 
+  void ClosePage();
+  void Exit();
+  void ProcessClosingPage();
+
   std::string data_path() const { return app_data_path_; }
   void set_terminator(std::function<void(void)> terminator) {
     terminator_ = terminator;
   }
   bool launched() const { return launched_; }
+  std::list<WebView*> view_stack() const { return view_stack_; }
 
   virtual void OnCreatedNewWebView(WebView* view, WebView* new_view);
   virtual void OnClosedWebView(WebView* view);
@@ -98,6 +106,16 @@ class WebApplication : public WebView::EventListener {
   virtual void OnRotaryEvent(
       WebView* view, RotaryEventType type);
 #endif  // ROTARY_EVENT_FEATURE_SUPPORT
+#ifdef MANUAL_ROTATE_FEATURE_SUPPORT
+  virtual void OnRotatePrepared(WebView* view);
+#endif // MANUAL_ROTATE_FEATURE_SUPPORT
+  static Eina_Bool CheckPluginSession(void* user_data);
+  static Eina_Bool ClosePageInExtendedMainLoop(void* user_data);
+  struct Timer
+  {
+    WebApplication* application;
+    Ecore_Timer* timer;
+  } main_loop, session_counter;
 
  private:
   bool Initialize();
@@ -106,12 +124,26 @@ class WebApplication : public WebView::EventListener {
   void SendAppControlEvent();
   void LaunchInspector(common::AppControl* appcontrol);
   void SetupWebView(WebView* view);
+  void SetupWebViewCompatibilitySettings(WebView* view);
   void RemoveWebViewFromStack(WebView* view);
 
+  void SetupTizenVersion();
+  bool tizenWebKitCompatibilityEnabled() const;
+  struct {
+      unsigned m_major;
+      unsigned m_minor;
+      unsigned m_release;
+      bool tizenWebKitCompatibilityEnabled() const { return (m_major && m_major < 3); }
+  } m_tizenCompatibilitySettings;
+
   bool launched_;
   bool debug_mode_;
   bool verbose_mode_;
+  bool lang_changed_mode_;
+  bool is_terminate_called_;
+  bool is_close_page_called_;
   Ewk_Context* ewk_context_;
+  bool has_ownership_of_ewk_context_;
   NativeWindow* window_;
   std::string appid_;
   std::string app_data_path_;