uBrowser: Add support for EWK tracing feature.
authorPiotr Tworek <p.tworek@samsung.com>
Wed, 29 Apr 2015 13:39:09 +0000 (15:39 +0200)
committerYoungsoo Choi <kenshin.choi@samsung.com>
Tue, 10 Jul 2018 06:57:09 +0000 (06:57 +0000)
This is one of the features that is currently available in mini_browser,
but is not exposed in uBrowser. This patch bridges the gap.

Bug: http://web.sec.samsung.net/bugzilla/show_bug.cgi?id=12849

Change-Id: I0bb293794cebaede96776839fc8093843851e097
Signed-off-by: Piotr Tworek <p.tworek@samsung.com>
tizen_src/ewk/ubrowser/browser.cc
tizen_src/ewk/ubrowser/browser.h
tizen_src/ewk/ubrowser/window_ui.cc
tizen_src/ewk/ubrowser/window_ui.h

index 00d28f2..7ae5e05 100644 (file)
@@ -6,6 +6,7 @@
 
 #include <assert.h>
 #include <ewk_context.h>
+#include <ewk_tracing.h>
 
 #include "logger.h"
 
@@ -23,7 +24,8 @@ Browser::Browser(bool desktop)
   : toolbox_window_(NULL)
   , window_list_(NULL)
   , desktop_(desktop)
-  , inspector_started_(false) {
+  , inspector_started_(false)
+  , tracing_enabled_(false) {
 
   log_info("UI type: %s", desktop_ ? "desktop" : "mobile");
   if (desktop_)
@@ -127,6 +129,18 @@ void Browser::ActivateToolboxWindow() {
   elm_win_activate(toolbox_window_);
 }
 
+void Browser::StartTracing() {
+  log_trace("%s", __PRETTY_FUNCTION__);
+  ewk_start_tracing("*, disabled-by-default-toplevel.flow", "", "");
+  tracing_enabled_ = true;
+}
+
+void Browser::StopTracing() {
+  log_trace("%s", __PRETTY_FUNCTION__);
+  ewk_stop_tracing();
+  tracing_enabled_ = false;
+}
+
 void Browser::OnWindowDestroyed(Window::IdType id) {
   log_trace("%s: %x", __PRETTY_FUNCTION__, id);
   assert(window_map_.find(id) != window_map_.end());
index 925bf0d..0844665 100644 (file)
@@ -20,6 +20,9 @@ class Browser {
   void ShowInspectorWindow();
   void ActivateToolboxWindow();
   bool IsDesktop() const { return desktop_; }
+  bool IsTracingEnabled() const { return tracing_enabled_; }
+  void StartTracing();
+  void StopTracing();
 
   void OnWindowDestroyed(Window::IdType id);
   void OnWindowURLChanged(Window::IdType id, const char*);
@@ -53,6 +56,7 @@ class Browser {
 
   bool desktop_;
   bool inspector_started_;
+  bool tracing_enabled_;
 };
 
 #endif // _BROWSER_H_
index 9dfe0ab..ee9d6cd 100644 (file)
@@ -17,6 +17,7 @@ static std::string kDefaultNewWindowURL = "http://www.google.com";
 static double kMinViewScale = 1;
 static double kMaxViewScale = 4;
 static double kViewScaleDelta = 0.1;
+static int kNotificationTimeoutSec = 3;
 }
 
 WindowUI::WindowUI(Window& window, Browser& browser)
@@ -102,6 +103,17 @@ void WindowUI::EnableForwardButton(bool enable) {
   elm_object_disabled_set(forward_button_, !enable);
 }
 
+void WindowUI::ShowNotification(const char* text) {
+  log_trace("%s : %s", __PRETTY_FUNCTION__, text);
+  Evas_Object* notification = elm_notify_add(window_.GetEvasObject());
+  elm_notify_timeout_set(notification, kNotificationTimeoutSec);
+  Evas_Object* content = elm_label_add(notification);
+  elm_object_text_set(content, text);
+  elm_object_content_set(notification, content);
+  elm_notify_align_set(notification, 0.5, 0.5);
+  evas_object_show(notification);
+}
+
 Evas_Object* WindowUI::AddButton(Evas_Object* parent,
     const char* icon, const char* label, Evas_Smart_Cb cb) {
   Evas_Object *bt = elm_button_add(parent);
@@ -153,6 +165,14 @@ Evas_Object* WindowUI::CreateExtraActionsMenu(Evas_Object* parent) {
         &WindowUI::OnSelectTouchInput, this);
   }
 
+  if (!browser_.IsTracingEnabled()) {
+    elm_ctxpopup_item_append(menu, "Start tracing", NULL,
+        &WindowUI::OnStartTracing, this);
+  } else {
+    elm_ctxpopup_item_append(menu, "Stop tracing", NULL,
+        &WindowUI::OnStopTracing, this);
+  }
+
   elm_ctxpopup_item_append(menu, "Zoom in", NULL, &WindowUI::OnZoomIn, this);
   elm_ctxpopup_item_append(menu, "Zoom out", NULL, &WindowUI::OnZoomOut, this);
 
@@ -287,6 +307,7 @@ void WindowUI::OnSelectMouseInput(void* data, Evas_Object* obj, void*) {
   WindowUI *thiz = static_cast<WindowUI*>(data);
   thiz->window_.EnableTouchEvents(false);
   thiz->window_.EnableMouseEvents(true);
+  thiz->ShowNotification("Mouse events enabled");
   elm_ctxpopup_dismiss(obj);
 }
 
@@ -295,6 +316,7 @@ void WindowUI::OnSelectTouchInput(void* data, Evas_Object* obj, void*) {
   WindowUI *thiz = static_cast<WindowUI*>(data);
   thiz->window_.EnableTouchEvents(true);
   thiz->window_.EnableMouseEvents(false);
+  thiz->ShowNotification("Touch events enabled");
   elm_ctxpopup_dismiss(obj);
 }
 
@@ -321,3 +343,19 @@ void WindowUI::OnZoomOut(void* data, Evas_Object* obj, void*) {
   _change_zoom(thiz->window_, -kViewScaleDelta);
   elm_ctxpopup_dismiss(obj);
 }
+
+void WindowUI::OnStartTracing(void* data, Evas_Object* obj, void*) {
+  log_trace("%s", __PRETTY_FUNCTION__);
+  WindowUI *thiz = static_cast<WindowUI*>(data);
+  thiz->browser_.StartTracing();
+  elm_ctxpopup_dismiss(obj);
+  thiz->ShowNotification("Tracing started");
+}
+
+void WindowUI::OnStopTracing(void* data, Evas_Object* obj, void*) {
+  log_trace("%s", __PRETTY_FUNCTION__);
+  WindowUI *thiz = static_cast<WindowUI*>(data);
+  thiz->browser_.StopTracing();
+  elm_ctxpopup_dismiss(obj);
+  thiz->ShowNotification("Tracing finished");
+}
index 8d11ed1..4591361 100644 (file)
@@ -24,6 +24,8 @@ class WindowUI {
   void EnableBackButton(bool);
   void EnableForwardButton(bool);
 
+  void ShowNotification(const char* text);
+
  private:
   Evas_Object* AddButton(Evas_Object*, const char*,
       const char*, Evas_Smart_Cb);
@@ -50,6 +52,8 @@ class WindowUI {
   static void OnSelectTouchInput(void* data, Evas_Object*, void*);
   static void OnZoomIn(void* data, Evas_Object*, void*);
   static void OnZoomOut(void* data, Evas_Object*, void*);
+  static void OnStartTracing(void* data, Evas_Object*, void*);
+  static void OnStopTracing(void* data, Evas_Object*, void*);
 
   Window& window_;
   Browser& browser_;