Fixed navigating using 'Backspace' key 99/50299/7 accepted/tizen_tv accepted/tizen/tv/20151030.063422 submit/tizen_tv/20151029.231718
authorAlbert Malewski <a.malewski@samsung.com>
Tue, 27 Oct 2015 15:06:30 +0000 (16:06 +0100)
committerAlbert Malewski <a.malewski@samsung.com>
Thu, 29 Oct 2015 12:36:38 +0000 (05:36 -0700)
[Issue]    https://bugs.tizen.org/jira/browse/TT-238
[Problem]  WebPageUI is closed when 'Backspace' button is used in URIEntry.
[Solution] Added condition in onBackPressed function that prevents
           closing WebPageUI when cursor if URIEntry is focused.
[Verify]   1. Tab Manager > New Tab > press 'Backspace' key > Obs
           Quick access should be closed.
           2. Load a web page > Set focus on URIEntry > press 'Backspace'
           WebPageUI should not be closed.
           3. Tab Manager > New Incognito tab > Press 'Backspace' key > Obs
           Browser shoud not crash

Change-Id: I0fb51f949ced56641d3f8f57b053d0c0e1e339c8

core/AbstractWebEngine/AbstractWebEngine.h
services/QuickAccess/QuickAccess.cpp
services/QuickAccess/QuickAccess.h
services/SimpleUI/SimpleUI.cpp
services/WebKitEngineService/WebKitEngineService.cpp
services/WebKitEngineService/WebKitEngineService.h
services/WebKitEngineService/WebView.h

index bbbc8d8..0957164 100644 (file)
@@ -276,7 +276,7 @@ public:
     /**
      * @brief back or exit when back key is pressed
      */
-    virtual void backButtonClicked() const = 0;
+    virtual void backButtonClicked() = 0;
 
     /**
      * @brief Switch current view to mobile mode
@@ -403,6 +403,11 @@ public:
      * \param bool true if IME is opened, false otherwise
      */
     boost::signals2::signal<void (bool)> IMEStateChanged;
+
+    /**
+     * Switch view to actual web page
+     */
+    boost::signals2::signal<void ()> switchToWebPage;
 };
 
 } /* end of basic_webengine */
index e39ff1e..8288e9b 100644 (file)
@@ -499,6 +499,9 @@ void QuickAccess::backButtonClicked()
 {
     if (m_detailPopup.isVisible()) {
         m_detailPopup.hide();
+    } else {
+        hideUI();
+        switchViewToWebPage();
     }
 }
 
index 5418b38..d89d4e9 100644 (file)
@@ -59,6 +59,7 @@ public:
     boost::signals2::signal<void ()> mostVisitedClicked;
     boost::signals2::signal<void ()> bookmarkClicked;
     boost::signals2::signal<void ()> bookmarkManagerClicked;
+    boost::signals2::signal<void ()> switchViewToWebPage;
 
     static const int MAX_THUMBNAIL_WIDTH;
     static const int MAX_THUMBNAIL_HEIGHT;
index f810ddd..08e511f 100644 (file)
@@ -266,6 +266,7 @@ void SimpleUI::connectUISignals()
     m_quickAccess->mostVisitedClicked.connect(boost::bind(&SimpleUI::onMostVisitedClicked, this));
     m_quickAccess->bookmarkClicked.connect(boost::bind(&SimpleUI::onBookmarkButtonClicked, this));
     m_quickAccess->bookmarkManagerClicked.connect(boost::bind(&SimpleUI::showBookmarkManagerUI, this));
+    m_quickAccess->switchViewToWebPage.connect(boost::bind(&SimpleUI::switchViewToWebPage, this));
 
     M_ASSERT(m_tabUI.get());
     m_tabUI->closeTabUIClicked.connect(boost::bind(&SimpleUI::closeTabUI, this));
@@ -407,6 +408,7 @@ void SimpleUI::connectModelSignals()
     m_webEngine->tabClosed.connect(boost::bind(&SimpleUI::tabClosed,this,_1));
     m_webEngine->IMEStateChanged.connect(boost::bind(&SimpleUI::setwvIMEStatus, this, _1));
     m_webEngine->titleChanged.connect(boost::bind(&WebPageUI::setPageTitle, m_webPageUI.get(), _1));
+    m_webEngine->switchToWebPage.connect(boost::bind(&SimpleUI::switchViewToWebPage, this));
 
     m_favoriteService->bookmarkAdded.connect(boost::bind(&SimpleUI::onBookmarkAdded, this,_1));
     m_favoriteService->bookmarkDeleted.connect(boost::bind(&SimpleUI::onBookmarkRemoved, this, _1));
@@ -429,6 +431,7 @@ void SimpleUI::switchViewToWebPage()
     if(m_webEngine->isSuspended())
         m_webEngine->resume();
     m_webPageUI->switchViewToWebPage(m_webEngine->getLayout(), m_webEngine->getURI(), m_webEngine->getTitle());
+    m_webPageUI->toIncognito(m_webEngine->isPrivateMode(m_webEngine->currentTabId()));
 }
 
 void SimpleUI::switchToTab(const tizen_browser::basic_webengine::TabId& tabId)
@@ -615,10 +618,12 @@ void SimpleUI::onBackPressed()
         m_tabUI->onBackKey();
     } else if (m_webPageUI->stateEquals(WPUState::QUICK_ACCESS)) {
         m_quickAccess->backButtonClicked();
-    } else if ((m_viewManager->topOfStack() == m_webPageUI.get()) && !m_webPageUI->getURIEntry().hasFocus() && !m_wvIMEStatus) {
-        m_webEngine->backButtonClicked();
-    } else {
-        m_viewManager->popTheStack();
+    } else if (!m_webPageUI->getURIEntry().hasFocus() && !m_wvIMEStatus) {
+        if ((m_viewManager->topOfStack() == m_webPageUI.get())) {
+            m_webEngine->backButtonClicked();
+        } else {
+            m_viewManager->popTheStack();
+        }
     }
 }
 
index a451fac..2f99ada 100644 (file)
@@ -513,11 +513,14 @@ void WebKitEngineService::_IMEStateChanged(bool enable)
     IMEStateChanged(enable);
 }
 
-void WebKitEngineService::backButtonClicked() const
+void WebKitEngineService::backButtonClicked()
 {
     M_ASSERT(m_currentWebView);
     if (isBackEnabled()) {
         m_currentWebView->back();
+    } else if (m_currentWebView->isPrivateMode()) {
+        closeTab();
+        switchToWebPage();
     } else {
         app_efl_exit();
     }
index beb9053..5faadb3 100644 (file)
@@ -169,7 +169,7 @@ public:
     /**
      * @brief back or exit when back key is pressed
      */
-    void backButtonClicked() const;
+    void backButtonClicked();
 
     void switchToMobileMode();
     void switchToDesktopMode();
index f73919a..4cce9db 100644 (file)
@@ -170,6 +170,8 @@ public:
 
     boost::signals2::signal<void (bool)> IMEStateChanged;
 
+    boost::signals2::signal<void ()> switchToWebPage;
+
 private:
     void registerCallbacks();
     void unregisterCallbacks();