Prevent duplicated call of |Terminate|
[platform/framework/web/crosswalk-tizen.git] / runtime / browser / web_application.cc
index 97d9bb3..dd6383e 100755 (executable)
@@ -294,6 +294,7 @@ WebApplication::WebApplication(
       verbose_mode_(false),
       lang_changed_mode_(false),
       is_terminate_called_(false),
+      is_close_page_called_(false),
       ewk_context_(
           ewk_context_new_with_injected_bundle_path(INJECTED_BUNDLE_PATH)),
       has_ownership_of_ewk_context_(true),
@@ -313,6 +314,7 @@ WebApplication::WebApplication(
       debug_mode_(false),
       verbose_mode_(false),
       is_terminate_called_(false),
+      is_close_page_called_(false),
       ewk_context_(context),
       has_ownership_of_ewk_context_(false),
       window_(window),
@@ -647,6 +649,10 @@ void WebApplication::Suspend() {
 }
 
 void WebApplication::Terminate() {
+  // Just process closing page once.
+  if (is_terminate_called_ || is_close_page_called_)
+    return;
+
   is_terminate_called_ = true;
   ClosePage();
 }
@@ -676,6 +682,7 @@ void WebApplication::ProcessClosingPage() {
 
 void WebApplication::ClosePage() {
   LOGGER(DEBUG);
+  is_close_page_called_ = true;
 
   int valid_evas_object_count = 0;
   auto it = view_stack_.begin();