Implement a routine to go back to previous page or quit Browser when BackSpace Key... 76/40776/1
authorsungwon2.han <sungwon2.han@samsung.com>
Tue, 9 Jun 2015 04:18:35 +0000 (13:18 +0900)
committersungwon2.han <sungwon2.han@samsung.com>
Tue, 9 Jun 2015 04:18:35 +0000 (13:18 +0900)
1. Go back to previous page when "Back" is enabled.
2. Quit Browser when "Back" is not enabled.

editorclient,ime,opened, editorclient,ime,closed events should be handled not to process BackSpace Key when focus is on Editor.

Change-Id: I8ee7ab24364aef0662fa4577a5f55497a0836fce
Signed-off-by: sungwon2.han <sungwon2.han@samsung.com>
12 files changed:
core/AbstractWebEngine/AbstractWebEngine.h
core/main.cpp
services/CMakeLists.txt
services/PlatformInputManager/PlatformInputManager.cpp
services/PlatformInputManager/PlatformInputManager.h
services/SimpleUI/CMakeLists.txt
services/SimpleUI/SimpleUI.cpp
services/SimpleUI/SimpleUI.h
services/WebKitEngineService/WebKitEngineService.cpp
services/WebKitEngineService/WebKitEngineService.h
services/WebKitEngineService/WebView.cpp
services/WebKitEngineService/WebView.h

index 4d7ad226d23b2afb59729d6fef8caa480821acea..dce8e9371a272ecb52af5f21ad8f5925f7eedd40 100644 (file)
@@ -251,6 +251,11 @@ public:
      */
     virtual std::shared_ptr<tizen_browser::tools::BrowserImage> getFavicon() = 0;
 
+    /**
+     * @brief back or exit when back key is pressed
+     */
+    virtual void backButtonClicked() const = 0;
+
     /**
      * FavIcon of current page changed
      */
index 009d812b5d56b611189a6df1f68a4bbae1a5832e..f435d7e29728aed46561103a749ee2e8ad0d7e4d 100644 (file)
@@ -59,6 +59,7 @@ static bool app_create(void * /*app_data*/)
 
 static void app_terminate(void */*app_data*/)
 {
+    BROWSER_LOGD("%s\n", __func__);
     std::shared_ptr<tizen_browser::base_ui::AbstractMainWindow<Evas_Object>> mainUi =
     std::dynamic_pointer_cast
     <
index d4b8ddc491277dd227f1a20cabf51f3b00ed38fe..89525385a54f8c03315bee9faf4a06b7a5b802d5 100644 (file)
@@ -6,6 +6,6 @@ add_subdirectory(SimpleUI)
 add_subdirectory(SimpleURI)
 add_subdirectory(StorageService)
 add_subdirectory(HistoryService)
-#add_subdirectory(PlatformInputManager)
+add_subdirectory(PlatformInputManager)
 add_subdirectory(SessionStorage)
 add_subdirectory(BookmarkService)
index 417488bbb1d1f3f8f65c729abdf9c70aaaf9b53b..b4c692525654733321fab067195b7da5915e7007 100644 (file)
@@ -17,8 +17,8 @@
 
 #include "PlatformInputManager.h"
 
-#include <X11/Xlib.h>
-#include <utilX.h>
+//#include <X11/Xlib.h>
+//#include <utilX.h>
 #include <Ecore.h>
 #include <Ecore_Evas.h>
 #include <Ecore_Input.h>
@@ -56,11 +56,11 @@ void PlatformInputManager::init(Evas_Object* mainWindow)
     m_xWindow = elm_win_xwindow_get(mainWindow);
 
     // This snippet is needed to show mouse pointer all the time, because by default it is hidden after few seconds
-    m_atomDevicemgrInputWindow = ecore_x_atom_get(E_PROP_DEVICEMGR_INPUTWIN);
-    m_atomAlwaysCursorOn = ecore_x_atom_get(E_PROP_NOT_CURSOR_HIDE);
-    if(!ecore_x_window_prop_window_get(ecore_x_window_root_first_get(), m_atomDevicemgrInputWindow, &m_devicemgr_win, 1))
-        BROWSER_LOGD("Failed to get device manager input window!");
-    ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_IN, __handler_FOCUS_IN, this);
+    //m_atomDevicemgrInputWindow = ecore_x_atom_get(E_PROP_DEVICEMGR_INPUTWIN);
+    //m_atomAlwaysCursorOn = ecore_x_atom_get(E_PROP_NOT_CURSOR_HIDE);
+    //if(!ecore_x_window_prop_window_get(ecore_x_window_root_first_get(), m_atomDevicemgrInputWindow, &m_devicemgr_win, 1))
+    //    BROWSER_LOGD("Failed to get device manager input window!");
+    //ecore_event_handler_add(ECORE_X_EVENT_WINDOW_FOCUS_IN, __handler_FOCUS_IN, this);
 }
 
 Eina_Bool PlatformInputManager::__filter(void *data, void */*loop_data*/, int type, void *event)
@@ -83,6 +83,7 @@ Eina_Bool PlatformInputManager::__filter(void *data, void */*loop_data*/, int ty
          * For that each arrow key is handled by us.
          * Pointer movement is realized in timer to achieve smooth animation of pointer's move.
          */
+/*
         if(self->m_pointerModeEnabled) {
             wasArrow = true;
             if (!keyName.compare("KEY_LEFT")) {
@@ -103,12 +104,13 @@ Eina_Bool PlatformInputManager::__filter(void *data, void */*loop_data*/, int ty
             }
             else
                 wasArrow = false;
-
+*/
             /**
             * If last pressed key was arrow we would like to convert Return key to mouse click
             * assuming that user was moving cursor and now want to "click" chosen element.
             * In other cases Return key is handled normally allowing for example to accecpt typed url.
             */
+/*
             if(!keyName.compare("KEY_ENTER")) {
                 if(self->m_lastPressedKey == ARROW) {
                     self->m_lastPressedKey = RETURN;
@@ -128,6 +130,7 @@ Eina_Bool PlatformInputManager::__filter(void *data, void */*loop_data*/, int ty
                 return EINA_FALSE;
             }
         }
+*/
 
         self->m_lastPressedKey= OTHER_KEY;
 
@@ -140,24 +143,24 @@ Eina_Bool PlatformInputManager::__filter(void *data, void */*loop_data*/, int ty
             return EINA_FALSE;
         }
 
-        if(!keyName.compare("KEY_CHANNELUP")){
+//        if(!keyName.compare("KEY_CHANNELUP")){
             /**
              * Converting ChannelUp Button on remote control and Page Up key on keyboard to mouse's wheel up move.
              * This is used to achieve same effect of scrolling web page using mouse, remote control and keyboard.
              */
-            self->mouseButtonManipulate(Button4, ButtonPress); // Simulate mouse wheel up movement
-            self->mouseButtonManipulate(Button4, ButtonRelease);
-            return EINA_FALSE;
-        }
+//            self->mouseButtonManipulate(Button4, ButtonPress); // Simulate mouse wheel up movement
+//            self->mouseButtonManipulate(Button4, ButtonRelease);
+//            return EINA_FALSE;
+//        }
 
-        if(!keyName.compare("KEY_CHANNELDOWN")){
+//        if(!keyName.compare("KEY_CHANNELDOWN")){
             /**
              * Same as above ChannelDown and Page Down are replaced by mouse's wheel down movement.
              */
-            self->mouseButtonManipulate(Button5, ButtonPress); // Simulate mouse wheel down movement
-            self->mouseButtonManipulate(Button5, ButtonRelease);
-            return EINA_FALSE;
-        }
+//            self->mouseButtonManipulate(Button5, ButtonPress); // Simulate mouse wheel down movement
+//            self->mouseButtonManipulate(Button5, ButtonRelease);
+//            return EINA_FALSE;
+//        }
 
         if(!keyName.compare("KEY_RETURN"))
             self->returnPressed();
@@ -167,6 +170,8 @@ Eina_Bool PlatformInputManager::__filter(void *data, void */*loop_data*/, int ty
             self->rightPressed();
         else if(!keyName.compare("KEY_ENTER"))
             self->enterPressed();
+        else if(!keyName.compare("BackSpace"))
+            self->backPressed();
     } else if(type == ECORE_EVENT_KEY_UP) {
         M_ASSERT(event);
         Ecore_Event_Key *ev = static_cast<Ecore_Event_Key *>(event);
@@ -180,27 +185,27 @@ Eina_Bool PlatformInputManager::__filter(void *data, void */*loop_data*/, int ty
         /**
          * When arrow key is released thread realizing pointer movement is stopped.
          */
-        if(self->m_pointerModeEnabled && (!keyName.compare("KEY_LEFT")||!keyName.compare("KEY_UP")
-        || !keyName.compare("KEY_RIGHT")||!keyName.compare("KEY_DOWN"))) {
-            if(self->m_mouseMoveTimer) {
-                self->m_currentMouseMovementParams.moveMousePointer = false;
-                ecore_timer_del(self->m_mouseMoveTimer);
-                self->m_mouseMoveTimer = NULL;
-            }
-            return EINA_FALSE;
-        }
+//        if(self->m_pointerModeEnabled && (!keyName.compare("KEY_LEFT")||!keyName.compare("KEY_UP")
+//        || !keyName.compare("KEY_RIGHT")||!keyName.compare("KEY_DOWN"))) {
+//            if(self->m_mouseMoveTimer) {
+//                self->m_currentMouseMovementParams.moveMousePointer = false;
+//                ecore_timer_del(self->m_mouseMoveTimer);
+//                self->m_mouseMoveTimer = NULL;
+//            }
+//            return EINA_FALSE;
+//        }
         /**
          * If Return key is being released we send event that mouse button was released (in pointer mode).
          */
-        if(self->m_lastPressedKey == RETURN && self->m_pointerModeEnabled && !keyName.compare("KEY_ENTER")) {
-            self->m_lastPressedKey = OTHER_KEY;
-            self->mouseButtonManipulate(Button1, ButtonRelease);
-            return EINA_FALSE;
-        }
+//        if(self->m_lastPressedKey == RETURN && self->m_pointerModeEnabled && !keyName.compare("KEY_ENTER")) {
+//            self->m_lastPressedKey = OTHER_KEY;
+//            self->mouseButtonManipulate(Button1, ButtonRelease);
+//            return EINA_FALSE;
+//        }
     }
     return EINA_TRUE;
 }
-
+/*
 Eina_Bool PlatformInputManager::mouseMove(void *data)
 {
     int x, y;
@@ -222,14 +227,14 @@ Eina_Bool PlatformInputManager::mouseMove(void *data)
     }
     return EINA_FALSE;
 }
-
-Eina_Bool PlatformInputManager::__handler_FOCUS_IN(void *data, int /*type*/, void */*event*/)
-{
-    PlatformInputManager * self = reinterpret_cast<PlatformInputManager *>(data);
-    ecore_x_window_prop_window_set(self->m_devicemgr_win, self->m_atomAlwaysCursorOn, &(self->m_xWindow), 1);
-    return EINA_TRUE;
-}
-
+*/
+//Eina_Bool PlatformInputManager::__handler_FOCUS_IN(void *data, int /*type*/, void */*event*/)
+//{
+//    PlatformInputManager * self = reinterpret_cast<PlatformInputManager *>(data);
+//    ecore_x_window_prop_window_set(self->m_devicemgr_win, self->m_atomAlwaysCursorOn, &(self->m_xWindow), 1);
+//    return EINA_TRUE;
+//}
+/*
 void PlatformInputManager::mouseButtonManipulate(int button, int event_type)
 {
     XEvent event;
@@ -260,7 +265,7 @@ void PlatformInputManager::mouseButtonManipulate(int button, int event_type)
 
     XFlush(display);
 }
-
+*/
 void PlatformInputManager::setPointerModeEnabled(bool enabled)
 {
     m_pointerModeEnabled = enabled;
index f35fcd245753aa745307cf01ccc86e1d150dcc68..63bbec2680a4e60b4cb49fd50794e94b05f62dce 100644 (file)
@@ -20,7 +20,7 @@
 #include <boost/signals2/signal.hpp>
 #include <boost/thread/thread.hpp>
 #include <Ecore.h>
-#include <Ecore_X.h>
+//#include <Ecore_X.h>
 #include <Eina.h>
 #include <Elementary.h>
 
@@ -54,6 +54,7 @@ public:
     boost::signals2::signal<void ()> enterPressed;
     boost::signals2::signal<void ()> leftPressed;
     boost::signals2::signal<void ()> rightPressed;
+    boost::signals2::signal<void ()> backPressed;
 
     /**
      * @brief Returns current service's name.
index 96fe02ca84981c048106ce495d807df11b270f46..6539054d924462cc6fe76d54eb696e3fc34df28b 100644 (file)
@@ -46,7 +46,7 @@ include_directories(${CMAKE_SOURCE_DIR}/services/StorageService/Storage/include)
 include_directories(${CMAKE_SOURCE_DIR}/services/FavoriteService)
 include_directories(${CMAKE_SOURCE_DIR}/services/HistoryService)
 include_directories(${CMAKE_SOURCE_DIR}/services/BookmarksUI)
-#include_directories(${CMAKE_SOURCE_DIR}/services/PlatformInputManager)
+include_directories(${CMAKE_SOURCE_DIR}/services/PlatformInputManager)
 include_directories(${CMAKE_SOURCE_DIR}/services/SessionStorage)
 
 include(FindPkgConfig)
@@ -59,13 +59,13 @@ add_dependencies(${PROJECT_NAME} SimpleURI)
 add_dependencies(${PROJECT_NAME} StorageService)
 add_dependencies(${PROJECT_NAME} HistoryService)
 add_dependencies(${PROJECT_NAME} BookmarksUI)
-#add_dependencies(${PROJECT_NAME} PlatformInputManager)
+add_dependencies(${PROJECT_NAME} PlatformInputManager)
 add_dependencies(${PROJECT_NAME} SessionStorage)
 target_link_libraries(${PROJECT_NAME} SimpleURI)
 target_link_libraries(${PROJECT_NAME} StorageService)
 target_link_libraries(${PROJECT_NAME} HistoryService)
 target_link_libraries(${PROJECT_NAME} BookmarksUI)
-#target_link_libraries(${PROJECT_NAME} PlatformInputManager)
+target_link_libraries(${PROJECT_NAME} PlatformInputManager)
 target_link_libraries(${PROJECT_NAME} SessionStorage)
 target_link_libraries(${PROJECT_NAME} ${EFL_LDFLAGS})
 
index 4099f5279bd3ccfac9e5eb31dbbad3f5635cd6c8..042a297fbf8de52444bbdf8afdda877fb6eb9d20 100644 (file)
@@ -77,6 +77,7 @@ SimpleUI::SimpleUI(/*Evas_Object *window*/)
 }
 
 SimpleUI::~SimpleUI() {
+    BROWSER_LOGD("%s", __func__);
     m_sessionService->getStorage()->deleteSession(m_currentSession);
     /// \todo Auto-generated destructor stub
     evas_object_del(m_window.get());
@@ -84,6 +85,7 @@ SimpleUI::~SimpleUI() {
 
 void SimpleUI::destroyUI()
 {
+    BROWSER_LOGD("%s", __func__);
     evas_object_del(m_window.get());
 }
 
@@ -192,7 +194,7 @@ int SimpleUI::exec(const std::string& _url)
                 (tizen_browser::core::ServiceManager::getInstance().getService("org.tizen.browser.historyservice"));
             M_ASSERT(m_historyService);
 
-/*
+
             // Platforminputmanager
             BROWSER_LOGD("[%s:%d] service: platforminputmanager ", __PRETTY_FUNCTION__, __LINE__);
             m_platformInputManager =
@@ -202,7 +204,8 @@ int SimpleUI::exec(const std::string& _url)
             M_ASSERT(m_platformInputManager);
             m_platformInputManager->init(m_window.get());
             m_platformInputManager->returnPressed.connect(boost::bind(&elm_exit));
-*/
+            m_platformInputManager->backPressed.connect(boost::bind(&SimpleUI::onBackPressed, this));
+
             createActions();
             // left buttons
             leftButtonBar = std::make_shared<ButtonBar>(m_mainLayout, "SimpleUI/LeftButtonBar.edj", "left_button_bar");
@@ -599,7 +602,7 @@ void SimpleUI::onBookmarkRemoved(const std::string& uri)
     webTitleBar->removeFavIcon();
     webTitleBar->show("Removed from favorites");
 }
-/*
+
 void SimpleUI::onReturnPressed(MenuButton *m)
 {
     BROWSER_LOGD("[%s]", __func__);
@@ -608,7 +611,13 @@ void SimpleUI::onReturnPressed(MenuButton *m)
     hidePopup.disconnect_all_slots();
     m->hidePopup();
 }
-*/
+
+void SimpleUI::onBackPressed()
+{
+    BROWSER_LOGD("[%s]", __func__);
+    m_webEngine->backButtonClicked();
+}
+
 void SimpleUI::backEnable(bool enable)
 {
     m_back->setEnabled(enable);
@@ -815,9 +824,9 @@ void SimpleUI::showZoomMenu()
     m_zoomList->setZoom(currentZoomType);
     BROWSER_LOGD("Current zoom factor from webkit %d%%", m_webEngine->getZoomFactor());
 
-//    m_platformInputManager->returnPressed.disconnect_all_slots();
-//    m_platformInputManager->returnPressed.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_zoomList.get()));
-//    hidePopup.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_zoomList.get()));
+    m_platformInputManager->returnPressed.disconnect_all_slots();
+    m_platformInputManager->returnPressed.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_zoomList.get()));
+    hidePopup.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_zoomList.get()));
     m_zoomList->showPopup();
 }
 
@@ -836,13 +845,13 @@ void SimpleUI::showTabMenu()
         m_tabList->tabClicked.connect(boost::bind(&SimpleUI::tabClicked, this, _1));
         m_tabList->tabDelete.connect(boost::bind(&SimpleUI::closeTab, this, _1));
 
-//        m_platformInputManager->rightPressed.connect(boost::bind(&TabList::rightPressed, m_tabList.get()));
-//        m_platformInputManager->leftPressed.connect(boost::bind(&TabList::leftPressed, m_tabList.get()));
-//        m_platformInputManager->enterPressed.connect(boost::bind(&TabList::enterPressed, m_tabList.get()));
+        m_platformInputManager->rightPressed.connect(boost::bind(&TabList::rightPressed, m_tabList.get()));
+        m_platformInputManager->leftPressed.connect(boost::bind(&TabList::leftPressed, m_tabList.get()));
+        m_platformInputManager->enterPressed.connect(boost::bind(&TabList::enterPressed, m_tabList.get()));
     }
-//    m_platformInputManager->returnPressed.disconnect_all_slots();
-//    m_platformInputManager->returnPressed.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_tabList.get()));
-//    hidePopup.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_tabList.get()));
+    m_platformInputManager->returnPressed.disconnect_all_slots();
+    m_platformInputManager->returnPressed.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_tabList.get()));
+    hidePopup.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_tabList.get()));
     m_tabList->addItems(m_webEngine->getTabContents());
     m_tabList->setCurrentTabId(m_webEngine->currentTabId());
     m_tabList->disableNewTabBtn(m_tabList->getItemcCount() >= m_tabLimit);
@@ -950,9 +959,9 @@ void SimpleUI::showSettingsMenu()
         m_settings->addAction( m_settingDeleteFavorite);
         //m_settingPointerMode->toggled.connect(boost::bind(&tizen_browser::base_ui::Settings::setPointerModeEnabled, m_settings.get(), _1));
     }
-//    m_platformInputManager->returnPressed.disconnect_all_slots();
-//    m_platformInputManager->returnPressed.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_settings.get()));
-//    hidePopup.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_settings.get()));
+    m_platformInputManager->returnPressed.disconnect_all_slots();
+    m_platformInputManager->returnPressed.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_settings.get()));
+    hidePopup.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_settings.get()));
     m_settingDeleteHistory->setEnabled(m_historyService->getHistoryItemsCount());
     m_settingDeleteFavorite->setEnabled(m_favoriteService->countBookmarksAndSubFolders());
     m_settings->showPopup();
@@ -967,13 +976,13 @@ void SimpleUI::showHistory()
         m_historyList->deleteHistoryItem.connect(boost::bind(&tizen_browser::services::HistoryService::clearURLHistory, m_historyService.get(),_1));
         m_historyList->deleteHistoryItem.connect(boost::bind(&SimpleUI::hideHistory, this));
 
-//        m_platformInputManager->rightPressed.connect(boost::bind(&HistoryList::rightPressed, m_historyList.get()));
-//        m_platformInputManager->leftPressed.connect(boost::bind(&HistoryList::leftPressed, m_historyList.get()));
-//        m_platformInputManager->enterPressed.connect(boost::bind(&HistoryList::enterPressed, m_historyList.get()));
+        m_platformInputManager->rightPressed.connect(boost::bind(&HistoryList::rightPressed, m_historyList.get()));
+        m_platformInputManager->leftPressed.connect(boost::bind(&HistoryList::leftPressed, m_historyList.get()));
+        m_platformInputManager->enterPressed.connect(boost::bind(&HistoryList::enterPressed, m_historyList.get()));
     }
-//    m_platformInputManager->returnPressed.disconnect_all_slots();
-//    m_platformInputManager->returnPressed.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_historyList.get()));
-//    hidePopup.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_historyList.get()));
+    m_platformInputManager->returnPressed.disconnect_all_slots();
+    m_platformInputManager->returnPressed.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_historyList.get()));
+    hidePopup.connect(boost::bind(&SimpleUI::onReturnPressed, this, m_historyList.get()));
     m_historyList->addItems(m_historyService->getHistoryItems());
     m_historyList->showPopup();
 }
index 296730a206b652a5a38da7339ea94b86052acd6a..c33c4ee9777604ab0e23469138cbd0c461745596 100644 (file)
@@ -43,7 +43,7 @@
 #include "SimpleURI.h"
 #include "SimpleScroller.h"
 #include "WebTitleBar.h"
-//#include "PlatformInputManager.h"
+#include "PlatformInputManager.h"
 #include "SessionStorage.h"
 #include "SqlStorage.h"
 
@@ -235,6 +235,7 @@ private:
     void onNetErrorButtonPressed(PopupButtons, std::shared_ptr<PopupData>);
 
     void onReturnPressed(MenuButton *m);
+    void onBackPressed();
 
     boost::signals2::signal<void ()> hidePopup;
 
@@ -257,7 +258,7 @@ private:
     std::shared_ptr<tizen_browser::base_ui::ZoomList> m_zoomList;
     std::shared_ptr<tizen_browser::base_ui::TabList> m_tabList;
     std::shared_ptr<tizen_browser::base_ui::SearchBox> m_searchBox;
-    //std::shared_ptr<tizen_browser::services::PlatformInputManager> m_platformInputManager;
+    std::shared_ptr<tizen_browser::services::PlatformInputManager> m_platformInputManager;
     std::shared_ptr<tizen_browser::services::SessionStorage> m_sessionService;
     tizen_browser::Session::Session m_currentSession;
     std::shared_ptr<Settings> m_settings;
index f07a1ea1aa3362f969dfee477968a79a7f3e86be..5261a81bcc791313b68b4448309ee73b8d961578 100644 (file)
@@ -28,6 +28,7 @@
 #include <Evas.h>
 #include <memory>
 #include <BrowserImage.h>
+#include <app.h>
 
 #include "BrowserAssert.h"
 #include "BrowserLogger.h"
@@ -477,6 +478,16 @@ void WebKitEngineService::searchOnWebsite(const std::string & searchString, int
     m_currentWebView->searchOnWebsite(searchString, flags);
 }
 
+void WebKitEngineService::backButtonClicked() const
+{
+    if(isBackEnabled()) {
+        M_ASSERT(m_currentWebView);
+        m_currentWebView->back();
+    } else {
+        app_efl_exit();
+    }
+}
+
 } /* end of webkitengine_service */
 } /* end of basic_webengine */
 } /* end of tizen_browser */
index df8160e56c704faba965850a32607bdba1c0eb5a..6931a9c33fb33ece6ae30ffbf4d4fe8a27406360 100644 (file)
@@ -154,6 +154,11 @@ public:
      */
     std::shared_ptr<tizen_browser::tools::BrowserImage> getFavicon();
 
+    /**
+     * @brief back or exit when back key is pressed
+     */
+    void backButtonClicked() const;
+
 private:
     // callbacks from WebView
     void _favIconChanged(std::shared_ptr<tizen_browser::tools::BrowserImage> bi);
index 6cc11a676a73a9104b6e988c8e99dbee8c2ea311..f3deff2ba6712c5caaafbd3a7d8a8883948caab7 100644 (file)
@@ -157,6 +157,9 @@ void WebView::registerCallbacks()
 
     evas_object_event_callback_add(m_ewkView, EVAS_CALLBACK_MOUSE_DOWN, __setFocusToEwkView, this);
     evas_object_smart_callback_add(m_ewkView, "favicon,changed", onFaviconChaged, this);
+
+    evas_object_smart_callback_add(m_ewkView, "editorclient,ime,closed", __IMEClosed, this);
+    evas_object_smart_callback_add(m_ewkView, "editorclient,ime,opened", __IMEOpened, this);
 #endif
 }
 
@@ -182,6 +185,9 @@ void WebView::unregisterCallbacks()
 
     evas_object_event_callback_del(m_ewkView, EVAS_CALLBACK_MOUSE_DOWN, __setFocusToEwkView);
     evas_object_smart_callback_del_full(m_ewkView, "favicon,changed", onFaviconChaged, this);
+
+    evas_object_smart_callback_del_full(m_ewkView, "editorclient,ime,closed", __IMEClosed, this);
+    evas_object_smart_callback_del_full(m_ewkView, "editorclient,ime,opened", __IMEOpened, this);
 #endif
 }
 
@@ -746,6 +752,16 @@ void WebView::onFaviconChaged(void* data, Evas_Object*, void*)
     }
 }
 
+void WebView::__IMEClosed(void* data, Evas_Object*, void*)
+{
+    BROWSER_LOGD("%s", __func__);
+}
+
+void WebView::__IMEOpened(void* data, Evas_Object*, void*)
+{
+    BROWSER_LOGD("%s", __func__);
+}
+
 std::string WebView::securityOriginToUri(const Ewk_Security_Origin *origin)
 {
     std::string protocol = tizen_browser::tools::fromChar(ewk_security_origin_protocol_get(origin));
index 8fad26d41e6a20895c7b7bb305564145c91e2024..69609cdb27f0ec0da1141d00acac174e30e508b6 100644 (file)
@@ -176,6 +176,9 @@ private:
     //from webkit ewk_view
     static void onFaviconChaged(void * data, Evas_Object *obj, void *event_info);
 
+    static void __IMEClosed(void * data, Evas_Object *obj, void *event_info);
+    static void __IMEOpened(void * data, Evas_Object *obj, void *event_info);
+
     // confirmation requests
     static void __geolocationPermissionRequest(void * data, Evas_Object * obj, void * event_info);
     static void __usermediaPermissionRequest(void * data, Evas_Object * obj, void * event_info);