2 * Copyright (c) 2014 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the License);
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an AS IS BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 #include "browser_config.h"
19 #if defined(USE_EWEBKIT)
20 #include <ewk_chromium.h>
23 #include <boost/any.hpp>
26 #include <Elementary.h>
28 #include <Ecore_Wayland.h>
33 #include "BrowserLogger.h"
34 #include "ServiceManager.h"
35 #include "AbstractWebEngine.h"
37 #include "Tools/EflTools.h"
38 #include "BrowserImage.h"
40 #include "BookmarkItem.h"
41 #include "Tools/EflTools.h"
42 #include "BrowserImage.h"
43 #include "HistoryItem.h"
44 #include "BookmarkItem.h"
45 #include "boost/date_time/gregorian/gregorian.hpp"
46 #include "boost/date_time/posix_time/posix_time.hpp"
47 #include "SqlStorage.h"
48 #include "DetailPopup.h"
49 #include "UrlHistoryList/UrlHistoryList.h"
50 #include "NotificationPopup.h"
53 namespace tizen_browser{
56 EXPORT_SERVICE(SimpleUI, "org.tizen.browser.simpleui")
58 const std::string HomePageURL = "about:home";
59 const int ROOT_FOLDER = 0;
63 : AbstractMainWindow()
67 , m_bookmarkManagerUI()
72 , m_initialised(false)
73 , m_wvIMEStatus(false)
75 , m_ewkContext(ewk_context_new())
77 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
79 Evas_Object *main_window = elm_win_util_standard_add("browserApp", "browserApp");
80 if (main_window == nullptr)
81 BROWSER_LOGE("Failed to create main window");
83 setMainWindow(main_window);
84 m_viewManager = new ViewManager(main_window);
85 evas_object_size_hint_weight_set(main_window, EVAS_HINT_EXPAND, EVAS_HINT_EXPAND);
86 evas_object_size_hint_align_set (main_window, EVAS_HINT_FILL, EVAS_HINT_FILL);
88 elm_win_resize_object_add(main_window, m_viewManager->getContent());
89 evas_object_show(main_window);
92 SimpleUI::~SimpleUI() {
93 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
94 m_sessionService->getStorage()->deleteSession(m_currentSession);
95 evas_object_del(m_window.get());
96 ewk_context_delete(m_ewkContext);
99 void SimpleUI::destroyUI()
101 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
102 evas_object_del(m_window.get());
105 std::string SimpleUI::edjePath(const std::string &file)
107 return std::string(EDJE_DIR) + file;
110 std::vector<std::shared_ptr<tizen_browser::services::BookmarkItem> > SimpleUI::getBookmarks(int folder_id)
112 return m_favoriteService->getBookmarks(folder_id);
115 std::shared_ptr<services::HistoryItemVector> SimpleUI::getMostVisitedItems()
117 return m_historyService->getMostVisitedHistoryItems();
120 std::shared_ptr<services::HistoryItemVector> SimpleUI::getHistory()
122 return m_historyService->getHistoryToday();
125 int SimpleUI::exec(const std::string& _url)
127 BROWSER_LOGD("[%s] _url=%s, initialised=%d", __func__, _url.c_str(), m_initialised);
128 std::string url = _url;
131 if (m_window.get()) {
132 config::DefaultConfig config;
134 m_tabLimit = boost::any_cast <int> (config.get("TAB_LIMIT"));
135 m_favoritesLimit = boost::any_cast <int> (config.get("FAVORITES_LIMIT"));
142 // initModelServices() needs to be called after initUIServices()
147 connectModelSignals();
151 //Push first view to stack.
152 m_viewManager->pushViewToStack(m_webPageUI.get());
154 m_initialised = true;
157 m_currentSession = std::move(m_sessionService->getStorage()->createSession());
161 BROWSER_LOGD("[%s]: changing to homeUrl", __func__);
162 switchViewToQuickAccess();
163 restoreLastSession();
168 BROWSER_LOGD("[%s]:%d url=%s", __func__, __LINE__, url.c_str());
172 void SimpleUI::restoreLastSession()
174 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
175 M_ASSERT(m_sessionService);
176 Session::Session lastSession = std::move(m_sessionService->getStorage()->getLastSession());
177 if(lastSession.items().size() >= 1)
179 for(auto iter=lastSession.items().begin(), end=lastSession.items().end(); iter != end; ++iter)
181 openNewTab(iter->second);
183 m_sessionService->getStorage()->deleteSession(lastSession);
188 //TODO: Move all service creation here:
189 void SimpleUI::loadUIServices()
191 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
194 std::dynamic_pointer_cast
195 <tizen_browser::base_ui::WebPageUI,tizen_browser::core::AbstractService>
196 (tizen_browser::core::ServiceManager::getInstance().getService("org.tizen.browser.webpageui"));
199 std::dynamic_pointer_cast
200 <tizen_browser::base_ui::QuickAccess,tizen_browser::core::AbstractService>
201 (tizen_browser::core::ServiceManager::getInstance().getService("org.tizen.browser.quickaccess"));
204 std::dynamic_pointer_cast
205 <tizen_browser::base_ui::TabUI,tizen_browser::core::AbstractService>
206 (tizen_browser::core::ServiceManager::getInstance().getService("org.tizen.browser.tabui"));
209 std::dynamic_pointer_cast
210 <tizen_browser::base_ui::HistoryUI,tizen_browser::core::AbstractService>
211 (tizen_browser::core::ServiceManager::getInstance().getService("org.tizen.browser.historyui"));
214 std::dynamic_pointer_cast
215 <tizen_browser::base_ui::SettingsUI,tizen_browser::core::AbstractService>
216 (tizen_browser::core::ServiceManager::getInstance().getService("org.tizen.browser.settingsui"));
219 std::dynamic_pointer_cast
220 <tizen_browser::base_ui::MoreMenuUI,tizen_browser::core::AbstractService>
221 (tizen_browser::core::ServiceManager::getInstance().getService("org.tizen.browser.moremenuui"));
223 m_bookmarkManagerUI =
224 std::dynamic_pointer_cast
225 <tizen_browser::base_ui::BookmarkManagerUI,tizen_browser::core::AbstractService>
226 (tizen_browser::core::ServiceManager::getInstance().getService("org.tizen.browser.bookmarkmanagerui"));
229 std::dynamic_pointer_cast
230 <tizen_browser::base_ui::ZoomUI, tizen_browser::core::AbstractService>
231 (tizen_browser::core::ServiceManager::getInstance().getService("org.tizen.browser.zoomui"));
234 void SimpleUI::connectUISignals()
236 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
238 M_ASSERT(m_webPageUI.get());
239 m_webPageUI->getURIEntry().uriChanged.connect(boost::bind(&SimpleUI::filterURL, this, _1));
240 m_webPageUI->getURIEntry().uriEntryEditingChangedByUser.connect(boost::bind(&SimpleUI::onURLEntryEditedByUser, this, _1));
241 m_webPageUI->getURIEntry().uriEntryEditingChanged.connect(boost::bind(&SimpleUI::onURLEntryEdited, this));
242 m_webPageUI->backPage.connect(boost::bind(&SimpleUI::switchViewToWebPage, this));
243 m_webPageUI->backPage.connect(boost::bind(&tizen_browser::basic_webengine::AbstractWebEngine<Evas_Object>::back, m_webEngine.get()));
244 m_webPageUI->backPage.connect(boost::bind(&ZoomUI::showNavigation, m_zoomUI.get()));
245 m_webPageUI->reloadPage.connect(boost::bind(&SimpleUI::switchViewToWebPage, this));
246 m_webPageUI->showTabUI.connect(boost::bind(&SimpleUI::showTabUI, this));
247 m_webPageUI->showMoreMenu.connect(boost::bind(&SimpleUI::showMoreMenu, this));
248 m_webPageUI->forwardPage.connect(boost::bind(&tizen_browser::basic_webengine::AbstractWebEngine<Evas_Object>::forward, m_webEngine.get()));
249 m_webPageUI->forwardPage.connect(boost::bind(&ZoomUI::showNavigation, m_zoomUI.get()));
250 m_webPageUI->stopLoadingPage.connect(boost::bind(&tizen_browser::basic_webengine::AbstractWebEngine<Evas_Object>::stopLoading, m_webEngine.get()));
251 m_webPageUI->stopLoadingPage.connect(boost::bind(&ZoomUI::showNavigation, m_zoomUI.get()));
252 m_webPageUI->reloadPage.connect(boost::bind(&tizen_browser::basic_webengine::AbstractWebEngine<Evas_Object>::reload, m_webEngine.get()));
253 m_webPageUI->reloadPage.connect(boost::bind(&ZoomUI::showNavigation, m_zoomUI.get()));
254 m_webPageUI->showQuickAccess.connect(boost::bind(&SimpleUI::showQuickAccess, this));
255 m_webPageUI->hideQuickAccess.connect(boost::bind(&QuickAccess::hideUI, m_quickAccess));
256 m_webPageUI->bookmarkManagerClicked.connect(boost::bind(&SimpleUI::showBookmarkManagerUI, this));
257 m_webPageUI->showZoomNavigation.connect(boost::bind(&ZoomUI::showNavigation, m_zoomUI.get()));
259 M_ASSERT(m_quickAccess.get());
260 m_quickAccess->getDetailPopup().openURLInNewTab.connect(boost::bind(&SimpleUI::onOpenURLInNewTab, this, _1, _2));
261 m_quickAccess->getUrlHistoryList()->openURLInNewTab.connect(boost::bind(&SimpleUI::onOpenURLInNewTab, this, _1, _2));
262 m_quickAccess->openURLInNewTab.connect(boost::bind(&SimpleUI::onOpenURLInNewTab, this, _1, _2));
263 m_quickAccess->mostVisitedTileClicked.connect(boost::bind(&SimpleUI::onMostVisitedTileClicked, this, _1, _2));
264 m_quickAccess->mostVisitedClicked.connect(boost::bind(&SimpleUI::onMostVisitedClicked, this));
265 m_quickAccess->bookmarkClicked.connect(boost::bind(&SimpleUI::onBookmarkButtonClicked, this));
266 m_quickAccess->bookmarkManagerClicked.connect(boost::bind(&SimpleUI::showBookmarkManagerUI, this));
268 M_ASSERT(m_tabUI.get());
269 m_tabUI->closeTabUIClicked.connect(boost::bind(&SimpleUI::closeTabUI, this));
270 m_tabUI->closeTabUIClicked.connect(boost::bind(&ZoomUI::showNavigation, m_zoomUI.get()));
271 m_tabUI->newTabClicked.connect(boost::bind(&SimpleUI::newTabClicked, this));
272 m_tabUI->newTabClicked.connect(boost::bind(&SimpleUI::settingsPrivateModeSwitch, this, false));
273 m_tabUI->tabClicked.connect(boost::bind(&SimpleUI::tabClicked, this,_1));
274 m_tabUI->closeTabsClicked.connect(boost::bind(&SimpleUI::closeTabsClicked, this,_1));
275 m_tabUI->newIncognitoTabClicked.connect(boost::bind(&SimpleUI::settingsPrivateModeSwitch, this, true));
276 m_tabUI->newIncognitoTabClicked.connect(boost::bind(&SimpleUI::switchViewToIncognitoPage, this));
277 m_tabUI->tabsCount.connect(boost::bind(&SimpleUI::tabsCount, this));
279 M_ASSERT(m_historyUI.get());
280 m_historyUI->clearHistoryClicked.connect(boost::bind(&SimpleUI::onClearHistoryClicked, this));
281 m_historyUI->closeHistoryUIClicked.connect(boost::bind(&SimpleUI::closeHistoryUI, this));
282 m_historyUI->closeHistoryUIClicked.connect(boost::bind(&ZoomUI::showNavigation, m_zoomUI.get()));
283 // desktop mode as default
284 m_historyUI->historyItemClicked.connect(boost::bind(&SimpleUI::onOpenURLInNewTab, this, _1, true));
286 M_ASSERT(m_settingsUI.get());
287 m_settingsUI->closeSettingsUIClicked.connect(boost::bind(&SimpleUI::closeSettingsUI, this));
288 m_settingsUI->deleteSelectedDataClicked.connect(boost::bind(&SimpleUI::settingsDeleteSelectedData, this,_1));
289 m_settingsUI->resetMostVisitedClicked.connect(boost::bind(&SimpleUI::settingsResetMostVisited, this));
290 m_settingsUI->resetBrowserClicked.connect(boost::bind(&SimpleUI::settingsResetBrowser, this));
292 M_ASSERT(m_moreMenuUI.get());
293 m_moreMenuUI->bookmarkManagerClicked.connect(boost::bind(&SimpleUI::showBookmarkManagerUI, this));
294 m_moreMenuUI->historyUIClicked.connect(boost::bind(&SimpleUI::showHistoryUI, this));
295 m_moreMenuUI->settingsClicked.connect(boost::bind(&SimpleUI::showSettingsUI, this));
296 m_moreMenuUI->closeMoreMenuClicked.connect(boost::bind(&SimpleUI::closeMoreMenu, this));
297 m_moreMenuUI->closeMoreMenuClicked.connect(boost::bind(&ZoomUI::showNavigation, m_zoomUI.get()));
298 m_moreMenuUI->switchToMobileMode.connect(boost::bind(&SimpleUI::switchToMobileMode, this));
299 m_moreMenuUI->switchToDesktopMode.connect(boost::bind(&SimpleUI::switchToDesktopMode, this));
300 m_moreMenuUI->addToBookmarkClicked.connect(boost::bind(&SimpleUI::addToBookmarks, this, _1));
301 m_moreMenuUI->isBookmark.connect(boost::bind(&SimpleUI::checkBookmark, this));
302 m_moreMenuUI->deleteBookmark.connect(boost::bind(&SimpleUI::deleteBookmark, this));
303 m_moreMenuUI->zoomUIClicked.connect(boost::bind(&SimpleUI::showZoomUI, this));
305 M_ASSERT(m_bookmarkManagerUI.get());
306 m_bookmarkManagerUI->closeBookmarkManagerClicked.connect(boost::bind(&SimpleUI::closeBookmarkManagerUI, this));
307 m_bookmarkManagerUI->closeBookmarkManagerClicked.connect(boost::bind(&ZoomUI::showNavigation, m_zoomUI.get()));
308 m_bookmarkManagerUI->bookmarkItemClicked.connect(boost::bind(&SimpleUI::onBookmarkClicked, this, _1));
310 M_ASSERT(m_zoomUI.get());
311 m_zoomUI->setZoom.connect(boost::bind(&SimpleUI::setZoomFactor, this, _1));
312 m_zoomUI->getZoom.connect(boost::bind(&SimpleUI::getZoomFactor, this));
313 m_zoomUI->scrollView.connect(boost::bind(&SimpleUI::scrollView, this, _1, _2));
316 void SimpleUI::loadModelServices()
318 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
321 std::dynamic_pointer_cast
322 <basic_webengine::AbstractWebEngine<Evas_Object>,tizen_browser::core::AbstractService>
323 (tizen_browser::core::ServiceManager::getInstance().getService("org.tizen.browser.webkitengineservice"));
326 std::dynamic_pointer_cast
327 <tizen_browser::interfaces::AbstractFavoriteService,tizen_browser::core::AbstractService>
328 (tizen_browser::core::ServiceManager::getInstance().getService("org.tizen.browser.favoriteservice"));
331 std::dynamic_pointer_cast
332 <tizen_browser::services::HistoryService,tizen_browser::core::AbstractService>
333 (tizen_browser::core::ServiceManager::getInstance().getService("org.tizen.browser.historyservice"));
335 m_platformInputManager =
336 std::dynamic_pointer_cast
337 <tizen_browser::services::PlatformInputManager,tizen_browser::core::AbstractService>
338 (tizen_browser::core::ServiceManager::getInstance().getService("org.tizen.browser.platforminputmanager"));
341 std::dynamic_pointer_cast
342 <tizen_browser::services::SessionStorage,tizen_browser::core::AbstractService>
343 (tizen_browser::core::ServiceManager::getInstance().getService("org.tizen.browser.sessionStorageService"));
346 void SimpleUI::initUIServices()
348 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
349 M_ASSERT (m_viewManager);
351 M_ASSERT(m_webPageUI.get());
352 m_webPageUI->init(m_viewManager->getContent());
354 M_ASSERT(m_quickAccess.get());
355 m_quickAccess->init(m_webPageUI->getContent());
357 M_ASSERT(m_tabUI.get());
358 m_tabUI->init(m_viewManager->getContent());
360 M_ASSERT(m_historyUI.get());
361 m_historyUI->init(m_viewManager->getContent());
363 M_ASSERT(m_moreMenuUI.get());
364 m_moreMenuUI->init(m_viewManager->getContent());
366 M_ASSERT(m_settingsUI.get());
367 m_settingsUI->init(m_viewManager->getContent());
369 M_ASSERT(m_bookmarkManagerUI.get());
370 m_bookmarkManagerUI->init(m_viewManager->getContent());
372 M_ASSERT(m_zoomUI.get());
373 m_zoomUI->init(m_viewManager->getContent());
376 void SimpleUI::initModelServices()
378 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
380 M_ASSERT(m_webEngine);
381 M_ASSERT(m_webPageUI->getContent());
382 m_webEngine->init(m_webPageUI->getContent());
384 M_ASSERT(m_favoriteService);
385 m_favoriteService->synchronizeBookmarks();
386 m_favoriteService->getBookmarks();
388 M_ASSERT(m_platformInputManager);
389 m_platformInputManager->init(m_window.get());
392 void SimpleUI::connectModelSignals()
394 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
396 m_webEngine->uriChanged.connect(boost::bind(&SimpleUI::webEngineURLChanged, this, _1));
397 m_webEngine->uriChanged.connect(boost::bind(&URIEntry::changeUri, &m_webPageUI->getURIEntry(), _1));
398 m_webEngine->uriChanged.connect(boost::bind(&MoreMenuUI::setURL, m_moreMenuUI.get(), _1));
399 m_webEngine->webViewClicked.connect(boost::bind(&URIEntry::clearFocus, &m_webPageUI->getURIEntry()));
400 m_webEngine->backwardEnableChanged.connect(boost::bind(&WebPageUI::setBackButtonEnabled, m_webPageUI.get(), _1));
401 m_webEngine->forwardEnableChanged.connect(boost::bind(&WebPageUI::setForwardButtonEnabled, m_webPageUI.get(), _1));
402 m_webEngine->loadStarted.connect(boost::bind(&SimpleUI::loadStarted, this));
403 m_webEngine->loadProgress.connect(boost::bind(&SimpleUI::progressChanged,this,_1));
404 m_webEngine->loadFinished.connect(boost::bind(&SimpleUI::loadFinished, this));
405 m_webEngine->loadStop.connect(boost::bind(&SimpleUI::loadFinished, this));
406 m_webEngine->loadError.connect(boost::bind(&SimpleUI::loadError, this));
407 m_webEngine->confirmationRequest.connect(boost::bind(&SimpleUI::handleConfirmationRequest, this, _1));
408 m_webEngine->tabCreated.connect(boost::bind(&SimpleUI::tabCreated, this));
409 m_webEngine->checkIfCreate.connect(boost::bind(&SimpleUI::checkIfCreate, this));
410 m_webEngine->tabClosed.connect(boost::bind(&SimpleUI::tabClosed,this,_1));
411 m_webEngine->IMEStateChanged.connect(boost::bind(&SimpleUI::setwvIMEStatus, this, _1));
412 m_webEngine->favIconChanged.connect(boost::bind(&MoreMenuUI::setFavIcon, m_moreMenuUI.get(), _1));
413 m_webEngine->titleChanged.connect(boost::bind(&MoreMenuUI::setWebTitle, m_moreMenuUI.get(), _1));
414 m_webEngine->titleChanged.connect(boost::bind(&WebPageUI::setPageTitle, m_webPageUI.get(), _1));
416 m_favoriteService->bookmarkAdded.connect(boost::bind(&SimpleUI::onBookmarkAdded, this,_1));
417 m_favoriteService->bookmarkDeleted.connect(boost::bind(&SimpleUI::onBookmarkRemoved, this, _1));
419 m_historyService->historyDeleted.connect(boost::bind(&SimpleUI::onHistoryRemoved, this,_1));
421 m_platformInputManager->returnPressed.connect(boost::bind(&elm_exit));
422 m_platformInputManager->backPressed.connect(boost::bind(&SimpleUI::onBackPressed, this));
423 m_platformInputManager->mouseClicked.connect(
424 boost::bind(&SimpleUI::onMouseClick, this));
428 void SimpleUI::createActions()
430 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
431 ///\todo Add MulitStateAction. and convert m_stopLoading and m_reload actons to it?
433 m_settingPrivateBrowsing = sharedAction(new Action("Private browsing"));
434 m_settingPrivateBrowsing->setToolTip("On exit from private mode all cookies, history, and stored data will be deleted");
435 m_settingPrivateBrowsing->setCheckable(true);
436 m_settingPrivateBrowsing->setChecked(m_webEngine->isPrivateMode());
437 m_settingPrivateBrowsing->setEnabled(true);
440 void SimpleUI::connectActions()
442 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
443 m_settingPrivateBrowsing->toggled.connect(boost::bind(&SimpleUI::settingsPrivateModeSwitch, this, _1));
446 void SimpleUI::switchViewToWebPage()
448 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
449 M_ASSERT(m_viewManager);
450 if(m_webEngine->isSuspended())
451 m_webEngine->resume();
452 m_webPageUI->switchViewToWebPage(m_webEngine->getLayout(), m_webEngine->getURI(), m_webEngine->getTitle());
455 void SimpleUI::switchToTab(const tizen_browser::basic_webengine::TabId& tabId)
457 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
458 if(m_webEngine->currentTabId() != tabId) {
459 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
460 m_webEngine->switchToTab(tabId);
462 if(m_webEngine->isLoadError()){
463 BROWSER_LOGD("[%s:%d] LOAD ERROR!", __PRETTY_FUNCTION__, __LINE__);
467 BROWSER_LOGD("[%s:%d] swiching to web_view ", __PRETTY_FUNCTION__, __LINE__);
468 switchViewToWebPage();
469 m_zoomUI->showNavigation();
472 bool SimpleUI::isErrorPageActive()
474 return m_webPageUI->isErrorPageActive();
477 void SimpleUI::showQuickAccess()
479 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
480 m_quickAccess->showMostVisited(getMostVisitedItems());
481 m_quickAccess->showUI();
484 void SimpleUI::switchViewToQuickAccess()
486 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
487 M_ASSERT(m_viewManager);
489 m_webPageUI->switchViewToQuickAccess(m_quickAccess->getContent());
490 m_webEngine->disconnectCurrentWebViewSignals();
491 m_viewManager->popStackTo(m_webPageUI.get());
494 void SimpleUI::switchViewToIncognitoPage()
496 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
497 M_ASSERT(m_viewManager);
499 m_webPageUI->switchViewToIncognitoPage();
500 m_viewManager->popStackTo(m_webPageUI.get());
503 void SimpleUI::openNewTab(const std::string &uri, bool desktopMode)
505 BROWSER_LOGD("[%s:%d] uri =%s", __PRETTY_FUNCTION__, __LINE__, uri.c_str());
506 tizen_browser::basic_webengine::TabId tab = m_webEngine->addTab(uri, nullptr, desktopMode);
507 applyPrivateModeToTab(tab);
511 void SimpleUI::closeTab()
513 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
514 auto tabId = m_webEngine->currentTabId();
518 void SimpleUI::closeTab(const tizen_browser::basic_webengine::TabId& id)
520 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
521 m_currentSession.removeItem(id.toString());
522 m_webEngine->closeTab(id);
526 bool SimpleUI::checkBookmark()
528 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
529 if (m_webPageUI->isHomePageActive())
532 if(m_favoriteService->bookmarkExists(m_webEngine->getURI())) {
533 BROWSER_LOGD("[%s] There is bookmark for this site [%s], set indicator on!", __func__, m_webEngine->getURI().c_str());
537 BROWSER_LOGD("[%s] There is no bookmark for this site [%s], set indicator off", __func__, m_webEngine->getURI().c_str());
541 // Consider removing these functions
542 void SimpleUI::onBookmarkAdded(std::shared_ptr<tizen_browser::services::BookmarkItem>)
545 m_moreMenuUI->changeBookmarkStatus(true);
546 m_moreMenuUI->createToastPopup( (std::string(m_webEngine->getTitle()) + std::string(" added to bookmark")).c_str() );
550 void SimpleUI::onBookmarkRemoved(const std::string& uri)
552 BROWSER_LOGD("[%s] deleted %s", __func__, uri.c_str());
554 m_moreMenuUI->changeBookmarkStatus(false);
555 m_moreMenuUI->createToastPopup( (std::string(m_webEngine->getTitle()) + std::string(" removed from bookmark")).c_str() );
559 void SimpleUI::onOpenURLInNewTab(std::shared_ptr<tizen_browser::services::HistoryItem> historyItem, bool desktopMode)
561 BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
562 m_viewManager->popStackTo(m_webPageUI.get());
563 std::string historyAddress = historyItem->getUrl();
564 openNewTab(historyAddress, desktopMode);
567 void SimpleUI::onMostVisitedTileClicked(std::shared_ptr< services::HistoryItem > historyItem, int itemsNumber)
569 BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
570 m_quickAccess->openDetailPopup(historyItem, m_historyService->getHistoryItemsByURL(historyItem->getUrl(), itemsNumber));
573 void SimpleUI::onClearHistoryClicked()
575 BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
576 m_historyService->clearAllHistory();
579 void SimpleUI::onMostVisitedClicked()
581 BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
582 m_quickAccess->showMostVisited(getMostVisitedItems());
585 void SimpleUI::onBookmarkButtonClicked()
587 BROWSER_LOGD("%s:%d %s", __FILE__, __LINE__, __func__);
588 m_quickAccess->showBookmarks(getBookmarks());
591 void SimpleUI::onBookmarkClicked(std::shared_ptr<tizen_browser::services::BookmarkItem> bookmarkItem)
593 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
594 M_ASSERT(m_viewManager);
595 std::string bookmarkAddress = bookmarkItem->getAddress();
596 m_viewManager->popStackTo(m_webPageUI.get());
598 openNewTab(bookmarkAddress);
600 std::string bookmarkTitle = bookmarkItem->getTittle();
601 m_webPageUI->switchViewToWebPage(m_webEngine->getLayout(), bookmarkAddress, bookmarkTitle);
602 m_webEngine->setURI(bookmarkAddress);
603 m_webPageUI->setPageTitle(bookmarkTitle);
604 m_webPageUI->getURIEntry().clearFocus();
605 closeBookmarkManagerUI();
609 void SimpleUI::onHistoryRemoved(const std::string& uri)
611 BROWSER_LOGD("[%s] deleted %s", __func__, uri.c_str());
614 void SimpleUI::onReturnPressed(MenuButton *m)
616 BROWSER_LOGD("[%s]", __func__);
617 m_platformInputManager->returnPressed.disconnect_all_slots();
618 m_platformInputManager->returnPressed.connect(boost::bind(&elm_exit));
622 void SimpleUI::setwvIMEStatus(bool status)
624 BROWSER_LOGD("[%s]", __func__);
625 m_wvIMEStatus = status;
628 void SimpleUI::onBackPressed()
630 BROWSER_LOGD("[%s]", __func__);
631 if (m_webPageUI->isHomePageActive()) {
632 m_quickAccess->backButtonClicked();
634 if (!m_webPageUI->getURIEntry().hasFocus() && !m_wvIMEStatus)
635 m_webEngine->backButtonClicked();
639 void SimpleUI::reloadEnable(bool enable)
641 m_webPageUI->setReloadButtonEnabled(enable);
644 void SimpleUI::stopEnable(bool enable)
646 m_webPageUI->setStopButtonEnabled(enable);
649 void SimpleUI::loadStarted()
651 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
652 if(!m_webEngine->isPrivateMode()){
653 m_currentSession.updateItem(m_webEngine->currentTabId().toString(), m_webEngine->getURI());
655 m_webPageUI->loadStarted();
658 void SimpleUI::progressChanged(double progress)
660 m_webPageUI->progressChanged(progress);
663 void SimpleUI::loadFinished()
665 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
667 if(!m_webEngine->isPrivateMode()){
668 m_historyService->addHistoryItem(std::make_shared<tizen_browser::services::HistoryItem> (m_webEngine->getURI(),
669 m_webEngine->getTitle(),
670 m_webEngine->getFavicon()), m_webEngine->getSnapshotData(QuickAccess::MAX_THUMBNAIL_WIDTH, QuickAccess::MAX_THUMBNAIL_HEIGHT));
672 m_webPageUI->loadFinished();
675 void SimpleUI::loadError()
677 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
678 m_webPageUI->switchViewToErrorPage();
681 void SimpleUI::filterURL(const std::string& url)
683 BROWSER_LOGD("[%s:%d] url=%s", __PRETTY_FUNCTION__, __LINE__, url.c_str());
684 //check for special urls (like: 'about:home')
685 //if there will be more addresses may be we should
686 //create some kind of std::man<std::string url, bool *(doSomethingWithUrl)()>
687 //and then just map[url]() ? m_webEngine->setURI(url) : /*do nothing*/;;
688 if(/*url.empty() ||*/ url == HomePageURL){
689 m_webPageUI->getURIEntry().changeUri("");
690 } else if (!url.empty()){
692 //check if url is in favorites
694 //check if url is in blocked
698 if (m_webPageUI->isHomePageActive())
701 m_webEngine->setURI(url);
704 switchViewToWebPage();
706 m_webPageUI->getURIEntry().clearFocus();
709 void SimpleUI::onURLEntryEditedByUser(const std::shared_ptr<std::string> editedUrlPtr)
711 string editedUrl(*editedUrlPtr);
712 int historyItemsVisibleMax =
713 m_quickAccess->getUrlHistoryList()->getVisibleItemsMax();
714 int minKeywordLength =
715 m_quickAccess->getUrlHistoryList()->getMinKeywordLength();
716 std::shared_ptr<services::HistoryItemVector> result =
717 m_historyService->getHistoryItemsByKeywordsString(editedUrl,
718 historyItemsVisibleMax, minKeywordLength);
719 m_quickAccess->getUrlHistoryList()->onURLEntryEditedByUser(editedUrl, result);
722 void SimpleUI::onURLEntryEdited()
724 m_quickAccess->getUrlHistoryList()->onURLEntryEdited();
727 void SimpleUI::onMouseClick()
729 m_quickAccess->getUrlHistoryList()->onMouseClick();
732 void SimpleUI::webEngineURLChanged(const std::string url)
734 BROWSER_LOGD("webEngineURLChanged:%s", url.c_str());
735 m_webPageUI->getURIEntry().clearFocus();
738 void SimpleUI::showZoomUI()
740 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
741 if(! m_webPageUI->isHomePageActive()) {
742 M_ASSERT(m_viewManager);
743 m_viewManager->popStackTo(m_webPageUI.get());
744 m_webPageUI->showTabUI.connect(boost::bind(&SimpleUI::closeZoomUI, this));
745 m_webPageUI->showMoreMenu.connect(boost::bind(&SimpleUI::closeZoomUI, this));
746 m_zoomUI->show(m_window.get());
750 void SimpleUI::closeZoomUI()
752 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
757 void SimpleUI::setZoomFactor(int level)
759 BROWSER_LOGD("[%s:%d]", __PRETTY_FUNCTION__, __LINE__);
760 m_webEngine->setZoomFactor(level);
763 int SimpleUI::getZoomFactor()
765 BROWSER_LOGD("[%s:%d] %d", __PRETTY_FUNCTION__, __LINE__, m_webEngine->getZoomFactor());
766 return m_webEngine->getZoomFactor();
769 void SimpleUI::scrollView(const int& dx, const int& dy)
771 m_webEngine->scrollView(dx, dy);
774 void SimpleUI::showTabUI()
776 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
777 M_ASSERT(m_viewManager);
778 m_viewManager->pushViewToStack(m_tabUI.get());
779 m_tabUI->addTabItems(m_webEngine->getTabContents());
782 void SimpleUI::closeTabUI()
784 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
785 M_ASSERT(m_viewManager);
786 if (m_viewManager->topOfStack() == m_tabUI.get())
787 m_viewManager->popTheStack();
790 void SimpleUI::newTabClicked()
792 if (!checkIfCreate())
795 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
796 switchViewToQuickAccess();
799 void SimpleUI::tabClicked(const tizen_browser::basic_webengine::TabId& tabId)
801 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
802 m_viewManager->popStackTo(m_webPageUI.get());
803 applyPrivateModeToTab(tabId);
807 void SimpleUI::closeTabsClicked(const tizen_browser::basic_webengine::TabId& tabId)
809 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
810 m_webEngine->closeTab(tabId);
813 int SimpleUI::tabsCount()
815 return m_webEngine->tabsCount();
818 void SimpleUI::handleConfirmationRequest(basic_webengine::WebConfirmationPtr webConfirmation)
820 BROWSER_LOGD("%s", __func__);
821 switch(webConfirmation->getConfirmationType())
823 case basic_webengine::WebConfirmation::ConfirmationType::Authentication:
825 basic_webengine::AuthenticationConfirmationPtr auth = std::dynamic_pointer_cast<basic_webengine::AuthenticationConfirmation, basic_webengine::WebConfirmation>(webConfirmation);
827 Evas_Object *popup_content = elm_layout_add(m_webPageUI->getContent());
828 std::string edjFilePath = EDJE_DIR;
829 edjFilePath.append("SimpleUI/AuthenticationPopup.edj");
830 Eina_Bool layoutSetResult = elm_layout_file_set(popup_content, edjFilePath.c_str(), "authentication_popup");
831 if (!layoutSetResult)
832 throw std::runtime_error("Layout file not found: " + edjFilePath);
835 elm_object_translatable_part_text_set(popup_content, "login_label", "Login");
836 elm_object_translatable_part_text_set(popup_content, "password_label", "Password");
838 elm_object_part_text_set(popup_content, "login_label", "Login");
839 elm_object_part_text_set(popup_content, "password_label", "Password");
842 Evas_Object *loginEntry = elm_entry_add(popup_content);
843 elm_object_part_content_set(popup_content, "login", loginEntry);
845 Evas_Object *passwordEntry = elm_entry_add(popup_content);
846 elm_object_part_content_set(popup_content, "password", passwordEntry);
848 SimplePopup *popup = SimplePopup::createPopup();
849 popup->setTitle("Authentication request");
850 popup->addButton(OK);
851 popup->addButton(CANCEL);
852 popup->setContent(popup_content);
853 std::shared_ptr<AuthenticationPopupData> popupData = std::make_shared<AuthenticationPopupData>();
854 popupData->loginEntry = loginEntry;
855 popupData->passwordEntry = passwordEntry;
856 popupData->auth = auth;
857 popup->setData(popupData);
858 popup->buttonClicked.connect(boost::bind(&SimpleUI::authPopupButtonClicked, this, _1, _2));
862 case basic_webengine::WebConfirmation::ConfirmationType::CertificateConfirmation:
863 case basic_webengine::WebConfirmation::ConfirmationType::Geolocation:
864 case basic_webengine::WebConfirmation::ConfirmationType::UserMedia:
865 case basic_webengine::WebConfirmation::ConfirmationType::Notification:
867 // Implicitly accepted
868 BROWSER_LOGE("NOT IMPLEMENTED: popups to confirm Ceritificate, Geolocation, UserMedia, Notification");
869 webConfirmation->setResult(tizen_browser::basic_webengine::WebConfirmation::ConfirmationResult::Confirmed);
870 m_webEngine->confirmationResult(webConfirmation);
879 void SimpleUI::authPopupButtonClicked(PopupButtons button, std::shared_ptr<PopupData> popupData)
881 std::shared_ptr<AuthenticationPopupData> authPopupData = std::dynamic_pointer_cast<AuthenticationPopupData, PopupData>(popupData);
884 authPopupData->auth->setLogin(elm_entry_entry_get(authPopupData->loginEntry) ? elm_entry_entry_get(authPopupData->loginEntry) : "");
885 authPopupData->auth->setPassword(elm_entry_entry_get(authPopupData->passwordEntry) ? elm_entry_entry_get(authPopupData->passwordEntry) : "");
886 authPopupData->auth->setResult(basic_webengine::WebConfirmation::ConfirmationResult::Confirmed);
887 m_webEngine->confirmationResult(authPopupData->auth);
890 authPopupData->auth->setResult(basic_webengine::WebConfirmation::ConfirmationResult::Rejected);
891 m_webEngine->confirmationResult(authPopupData->auth);
903 void SimpleUI::showHistoryUI()
905 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
906 M_ASSERT(m_viewManager);
907 m_viewManager->pushViewToStack(m_historyUI.get());
908 m_historyUI->addHistoryItems(getHistory());
911 void SimpleUI::closeHistoryUI()
913 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
914 M_ASSERT(m_viewManager);
915 if (m_viewManager->topOfStack() == m_historyUI.get())
916 m_viewManager->popTheStack();
919 void SimpleUI::showSettingsUI()
921 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
922 M_ASSERT(m_viewManager);
923 m_viewManager->pushViewToStack(m_settingsUI.get());
926 void SimpleUI::closeSettingsUI()
928 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
929 M_ASSERT(m_viewManager);
930 if (m_viewManager->topOfStack() == m_settingsUI.get())
931 m_viewManager->popTheStack();
934 void SimpleUI::showMoreMenu()
936 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
937 M_ASSERT(m_viewManager);
939 bool desktopMode = m_webPageUI->isHomePageActive() ? m_quickAccess->isDesktopMode() : m_webEngine->isDesktopMode();
940 m_moreMenuUI->setDesktopMode(desktopMode);
941 m_viewManager->pushViewToStack(m_moreMenuUI.get());
942 m_moreMenuUI->showCurrentTab();
944 if(!m_webPageUI->isHomePageActive()) {
945 m_moreMenuUI->setFavIcon(m_webEngine->getFavicon());
946 m_moreMenuUI->setWebTitle(m_webEngine->getTitle());
947 m_moreMenuUI->setURL(m_webEngine->getURI());
950 m_moreMenuUI->setHomePageInfo();
954 void SimpleUI::closeMoreMenu()
956 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
957 M_ASSERT(m_viewManager);
958 if (m_viewManager->topOfStack() == m_moreMenuUI.get())
959 m_viewManager->popTheStack();
961 BROWSER_LOGD("[%s:%d] WARNING!!! closeMoreMenu is not topOfStack", __PRETTY_FUNCTION__, __LINE__);
964 void SimpleUI::switchToMobileMode()
966 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
967 if (!m_webPageUI->isHomePageActive()) {
968 m_webEngine->switchToMobileMode();
969 m_viewManager->popStackTo(m_webPageUI.get());
970 m_webEngine->reload();
972 m_quickAccess->setDesktopMode(false);
976 void SimpleUI::switchToDesktopMode()
978 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
979 if (!m_webPageUI->isHomePageActive()) {
980 m_webEngine->switchToDesktopMode();
981 m_webEngine->reload();
983 m_quickAccess->setDesktopMode(true);
987 void SimpleUI::showBookmarkManagerUI()
989 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
990 M_ASSERT(m_viewManager);
991 m_viewManager->pushViewToStack(m_bookmarkManagerUI.get());
992 m_bookmarkManagerUI->addBookmarkItems(getBookmarks(ROOT_FOLDER));
995 void SimpleUI::closeBookmarkManagerUI()
997 BROWSER_LOGD("[%s:%d] ", __PRETTY_FUNCTION__, __LINE__);
998 M_ASSERT(m_viewManager);
999 if (m_viewManager->topOfStack() == m_bookmarkManagerUI.get())
1000 m_viewManager->popTheStack();
1003 void SimpleUI::settingsPrivateModeSwitch(bool newState)
1005 BROWSER_LOGD("%s: Setting Private mode to: %s", __func__, (newState ? "true" : "false"));
1006 m_incognito = newState;
1009 void SimpleUI::applyPrivateModeToTab(const tizen_browser::basic_webengine::TabId& tabId)
1011 if (m_webEngine->isPrivateMode(tabId) < 0) {
1012 m_webEngine->setPrivateMode(tabId, m_incognito);
1013 m_webPageUI->toIncognito(m_incognito);
1015 m_webEngine->setPrivateMode(tabId, m_webEngine->isPrivateMode(tabId));
1016 m_webPageUI->toIncognito(m_webEngine->isPrivateMode(tabId));
1020 void SimpleUI::settingsDeleteSelectedData(const std::string& str)
1022 BROWSER_LOGD("[%s]: Deleting selected data", __func__);
1023 M_ASSERT(m_viewManager);
1024 NotificationPopup *popup = NotificationPopup::createNotificationPopup(m_viewManager->getContent());
1025 popup->show("Delete Web Browsing Data");
1026 onDeleteSelectedDataButton(str);
1030 void SimpleUI::onDeleteSelectedDataButton(const std::string& dataText)
1032 BROWSER_LOGD("[%s]: TYPE : %s", __func__, dataText.c_str());
1033 if (dataText.find("CACHE") != std::string::npos)
1034 m_webEngine->clearPrivateData();
1035 if (dataText.find("COOKIES") != std::string::npos)
1036 m_webEngine->clearPrivateData();
1037 if (dataText.find("HISTORY") != std::string::npos)
1038 m_historyService->clearAllHistory();
1041 void SimpleUI::settingsResetMostVisited()
1043 BROWSER_LOGD("[%s]: Deleting most visited sites", __func__);
1044 M_ASSERT(m_viewManager);
1045 NotificationPopup *popup = NotificationPopup::createNotificationPopup(m_viewManager->getContent());
1046 popup->show("Reset Most Visited Sites");
1047 onDeleteMostVisitedButton(nullptr);
1051 void SimpleUI::onDeleteMostVisitedButton(std::shared_ptr< PopupData > /*popupData*/)
1053 BROWSER_LOGD("[%s]: Deleting most visited", __func__);
1054 m_historyService->cleanMostVisitedHistoryItems();
1057 void SimpleUI::settingsResetBrowser()
1059 BROWSER_LOGD("[%s]: Resetting browser", __func__);
1060 SimplePopup *popup = SimplePopup::createPopup();
1061 popup->setTitle("Reset browser");
1062 popup->addButton(OK);
1063 popup->addButton(CANCEL);
1064 popup->setMessage("Are you sure you want to reset browser?");
1065 popup->buttonClicked.connect(boost::bind(&SimpleUI::onResetBrowserButton, this, _1, _2));
1069 void SimpleUI::onResetBrowserButton(PopupButtons button, std::shared_ptr< PopupData > /*popupData*/)
1072 BROWSER_LOGD("[%s]: OK", __func__);
1073 BROWSER_LOGD("[%s]: Resetting browser", __func__);
1074 M_ASSERT(m_viewManager);
1076 NotificationPopup *popup = NotificationPopup::createNotificationPopup(m_viewManager->getContent());
1077 popup->show("Reset Browser");
1079 m_webEngine->clearPrivateData();
1080 m_historyService->clearAllHistory();
1081 m_favoriteService->deleteAllBookmarks();
1083 // Close all openend tabs
1084 std::vector<std::shared_ptr<tizen_browser::basic_webengine::TabContent>> openedTabs = m_webEngine->getTabContents();
1085 for (auto it = openedTabs.begin(); it < openedTabs.end(); ++it) {
1086 tizen_browser::basic_webengine::TabId id = it->get()->getId();
1087 m_currentSession.removeItem(id.toString());
1088 m_webEngine->closeTab(id);
1090 //TODO: add here any missing functionality that should be cleaned.
1096 void SimpleUI::tabLimitPopupButtonClicked(PopupButtons button, std::shared_ptr< PopupData > /*popupData*/)
1098 if (button == CLOSE_TAB) {
1099 BROWSER_LOGD("[%s]: CLOSE TAB", __func__);
1104 void SimpleUI::tabCreated()
1106 int tabs = m_webEngine->tabsCount();
1107 m_webPageUI->setTabsNumber(tabs);
1110 bool SimpleUI::checkIfCreate()
1112 int tabs = m_webEngine->tabsCount();
1114 if (tabs >= m_tabLimit) {
1115 SimplePopup *popup = SimplePopup::createPopup();
1116 popup->setTitle("Maximum tab count reached.");
1117 popup->addButton(OK);
1118 popup->setMessage("Close other tabs to open another new tab");
1119 popup->buttonClicked.connect(boost::bind(&SimpleUI::tabLimitPopupButtonClicked, this, _1, _2));
1127 void SimpleUI::updateView() {
1128 int tabs = m_webEngine->tabsCount();
1129 BROWSER_LOGD("[%s] Opened tabs: %d", __func__, tabs);
1131 switchViewToQuickAccess();
1132 } else if (!m_webPageUI->isHomePageActive()) {
1133 switchViewToWebPage();
1135 m_webPageUI->setTabsNumber(tabs);
1138 void SimpleUI::tabClosed(const tizen_browser::basic_webengine::TabId& id) {
1139 m_currentSession.removeItem(id.toString());
1143 void SimpleUI::searchWebPage(std::string &text, int flags)
1145 m_webEngine->searchOnWebsite(text, flags);
1148 void SimpleUI::addToBookmarks(int folder_id)
1150 BROWSER_LOGD("[%s,%d],", __func__, __LINE__);
1151 if (m_favoriteService)
1153 if (m_webEngine && !m_webEngine->getURI().empty())
1155 m_favoriteService->addToBookmarks(m_webEngine->getURI(), m_webEngine->getTitle(), std::string(),
1156 m_webEngine->getSnapshotData(373, 240),
1157 m_webEngine->getFavicon(),(unsigned int)folder_id);
1162 //TODO: Replace by direct call.
1163 void SimpleUI::deleteBookmark()
1165 if (m_favoriteService)
1166 m_favoriteService->deleteBookmark(m_webEngine->getURI());