Add APIs of webview back forward list 28/253028/21
authorzhouleonlei <zhouleon.lei@samsung.com>
Thu, 4 Feb 2021 03:21:53 +0000 (11:21 +0800)
committerzhouleonlei <zhouleon.lei@samsung.com>
Thu, 8 Apr 2021 06:29:18 +0000 (14:29 +0800)
Change-Id: I646dc78ba17ad9bdbd386db78c1396301ba0d7bd

dali-extension/web-engine-chromium/tizen-web-engine-back-forward-list-item.cpp
dali-extension/web-engine-chromium/tizen-web-engine-back-forward-list-item.h
dali-extension/web-engine-chromium/tizen-web-engine-back-forward-list.cpp
dali-extension/web-engine-chromium/tizen-web-engine-back-forward-list.h
dali-extension/web-engine-lwe/tizen-web-engine-lwe.cpp

index c4170b1..bfb344a 100755 (executable)
@@ -22,28 +22,33 @@ namespace Dali
 namespace Plugin
 {
 
-TizenWebEngineBackForwardListItem::TizenWebEngineBackForwardListItem( Ewk_Back_Forward_List_Item* item )
-  : ewkBackForwardListItem( item )
+TizenWebEngineBackForwardListItem::TizenWebEngineBackForwardListItem(Ewk_Back_Forward_List_Item* item, bool willItemBeDeleted)
+  : mEwkBackForwardListItem(item)
+  , mWillItemBeDeleted(willItemBeDeleted)
 {
 }
 
 TizenWebEngineBackForwardListItem::~TizenWebEngineBackForwardListItem()
 {
+  if (mWillItemBeDeleted)
+  {
+    ewk_back_forward_list_item_unref(mEwkBackForwardListItem);
+  }
 }
 
 std::string TizenWebEngineBackForwardListItem::GetUrl() const
 {
-  return std::string( ewk_back_forward_list_item_url_get( ewkBackForwardListItem ) );
+  return std::string(ewk_back_forward_list_item_url_get(mEwkBackForwardListItem));
 }
 
 std::string TizenWebEngineBackForwardListItem::GetTitle() const
 {
-  return std::string( ewk_back_forward_list_item_title_get( ewkBackForwardListItem ) );
+  return std::string(ewk_back_forward_list_item_title_get(mEwkBackForwardListItem));
 }
 
 std::string TizenWebEngineBackForwardListItem::GetOriginalUrl() const
 {
-  return std::string( ewk_back_forward_list_item_original_url_get( ewkBackForwardListItem ) );
+  return std::string(ewk_back_forward_list_item_original_url_get(mEwkBackForwardListItem));
 }
 
 } // namespace Plugin
index f9905f5..0970830 100755 (executable)
@@ -21,7 +21,6 @@
 // EXTERNAL INCLUDES
 #include <string>
 #include <ewk_back_forward_list_item.h>
-
 #include <dali/devel-api/adaptor-framework/web-engine-back-forward-list-item.h>
 
 namespace Dali
@@ -40,7 +39,7 @@ public:
   /**
    * @brief Constructor.
    */
-  TizenWebEngineBackForwardListItem( Ewk_Back_Forward_List_Item* );
+  TizenWebEngineBackForwardListItem(Ewk_Back_Forward_List_Item* item, bool willItemBeDeleted = false);
 
   /**
    * @brief Destructor.
@@ -48,36 +47,25 @@ public:
   ~TizenWebEngineBackForwardListItem();
 
   /**
-   * @brief Returns the URL of the item.
-   *
-   * @details The returned URL may differ from the original URL (For example,
-   *          if the page is redirected).
-   *
-   * @return The URL of the @a item,
-   *         otherwise @c "" in case of an error
+   * @copydoc Dali::WebEngineBackForwardListItem::GetUrl()
    */
   std::string GetUrl() const override;
 
   /**
-   * @brief Returns the title of the item.
-   *
-   * @return The title of the @a item,
-   *         otherwise @c "" in case of an error
+   * @copydoc Dali::WebEngineBackForwardListItem::GetTitle()
    */
   std::string GetTitle() const override;
 
   /**
-   * @brief Returns the original URL of the item.
-   *
-   * @return The original URL of the @a item,
-   *         otherwise @c "" in case of an error
+   * @copydoc Dali::WebEngineBackForwardListItem::GetOriginalUrl()
    */
   std::string GetOriginalUrl() const override;
 
 private:
 
-  Ewk_Back_Forward_List_Item* ewkBackForwardListItem;
+  Ewk_Back_Forward_List_Item* mEwkBackForwardListItem;
 
+  bool mWillItemBeDeleted; // if true, Ewk api will be called  to unref the item
 };
 
 } // namespace Plugin
index 305cd42..81b38b3 100755 (executable)
@@ -23,8 +23,8 @@ namespace Dali
 namespace Plugin
 {
 
-TizenWebEngineBackForwardList::TizenWebEngineBackForwardList( Ewk_Back_Forward_List* list )
-  : ewkBackForwardList( list )
+TizenWebEngineBackForwardList::TizenWebEngineBackForwardList(Ewk_Back_Forward_List* list)
+  : mEwkBackForwardList( list )
 {
 }
 
@@ -32,26 +32,76 @@ TizenWebEngineBackForwardList::~TizenWebEngineBackForwardList()
 {
 }
 
-Dali::WebEngineBackForwardListItem& TizenWebEngineBackForwardList::GetCurrentItem() const
+std::unique_ptr<Dali::WebEngineBackForwardListItem> TizenWebEngineBackForwardList::GetCurrentItem() const
 {
-  static TizenWebEngineBackForwardListItem itemCache( 0 );
-  Ewk_Back_Forward_List_Item* item = ewk_back_forward_list_current_item_get( ewkBackForwardList );
-  itemCache = TizenWebEngineBackForwardListItem( item );
-  return itemCache;
+  Ewk_Back_Forward_List_Item* item = ewk_back_forward_list_current_item_get(mEwkBackForwardList);
+  Dali::WebEngineBackForwardListItem* webitem = new TizenWebEngineBackForwardListItem(item);
+  std::unique_ptr<Dali::WebEngineBackForwardListItem> ret(webitem);
+  return ret;
 }
 
-Dali::WebEngineBackForwardListItem& TizenWebEngineBackForwardList::GetItemAtIndex( uint32_t index ) const
+std::unique_ptr<Dali::WebEngineBackForwardListItem> TizenWebEngineBackForwardList::GetPreviousItem() const
 {
-  static TizenWebEngineBackForwardListItem itemCache( 0 );
-  Ewk_Back_Forward_List_Item* item = ewk_back_forward_list_item_at_index_get( ewkBackForwardList, index );
-  itemCache = TizenWebEngineBackForwardListItem( item );
-  return itemCache;
+  Ewk_Back_Forward_List_Item* item = ewk_back_forward_list_previous_item_get(mEwkBackForwardList);
+  Dali::WebEngineBackForwardListItem* webitem = new TizenWebEngineBackForwardListItem(item);
+  std::unique_ptr<Dali::WebEngineBackForwardListItem> ret(webitem);
+  return ret;
+}
+
+std::unique_ptr<Dali::WebEngineBackForwardListItem> TizenWebEngineBackForwardList::GetNextItem() const
+{
+  Ewk_Back_Forward_List_Item* item = ewk_back_forward_list_next_item_get(mEwkBackForwardList);
+  Dali::WebEngineBackForwardListItem* webitem = new TizenWebEngineBackForwardListItem(item);
+  std::unique_ptr<Dali::WebEngineBackForwardListItem> ret(webitem);
+  return ret;
+}
+
+std::unique_ptr<Dali::WebEngineBackForwardListItem> TizenWebEngineBackForwardList::GetItemAtIndex(uint32_t index) const
+{
+  Ewk_Back_Forward_List_Item* item = ewk_back_forward_list_item_at_index_get( mEwkBackForwardList, index );
+  Dali::WebEngineBackForwardListItem* webitem = new TizenWebEngineBackForwardListItem(item);
+  std::unique_ptr<Dali::WebEngineBackForwardListItem> ret(webitem);
+  return ret;
 }
 
 uint32_t TizenWebEngineBackForwardList::GetItemCount() const
 {
-  return ewk_back_forward_list_count( ewkBackForwardList );
+  return ewk_back_forward_list_count( mEwkBackForwardList );
+}
+
+std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> TizenWebEngineBackForwardList::GetBackwardItems(int limit)
+{
+  std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> ret;
+
+  Eina_List* list = ewk_back_forward_list_n_back_items_copy(mEwkBackForwardList, limit);
+  Eina_List* it;
+  void *data = NULL;
+  EINA_LIST_FOREACH(list, it, data) {
+    Dali::WebEngineBackForwardListItem* webitem = new TizenWebEngineBackForwardListItem((Ewk_Back_Forward_List_Item*)(data), true);
+    std::unique_ptr<Dali::WebEngineBackForwardListItem> item(webitem);
+    ret.push_back(std::move(item));
+  }
+  eina_list_free(list);
+
+  return ret;
+}
+
+std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> TizenWebEngineBackForwardList::GetForwardItems(int limit)
+{
+  std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> ret;
+
+  Eina_List* list = ewk_back_forward_list_n_forward_items_copy(mEwkBackForwardList, limit);
+  Eina_List* it;
+  void *data = NULL;
+  EINA_LIST_FOREACH(list, it, data) {
+    Dali::WebEngineBackForwardListItem* webitem = new TizenWebEngineBackForwardListItem((Ewk_Back_Forward_List_Item*)(data), true);
+    std::unique_ptr<Dali::WebEngineBackForwardListItem> item(webitem);
+    ret.push_back(std::move(item));
+  }
+  eina_list_free(list);
+
+  return ret;
 }
 
 } // namespace Plugin
-} // namespace Dali
\ No newline at end of file
+} // namespace Dali
index 1da742d..74a16b4 100755 (executable)
  */
 
 // EXTERNAL INCLUDES
-#include <string>
 #include <ewk_back_forward_list.h>
-
 #include <dali/devel-api/adaptor-framework/web-engine-back-forward-list.h>
+#include <dali/devel-api/adaptor-framework/web-engine-back-forward-list-item.h>
 
 namespace Dali
 {
@@ -42,7 +41,7 @@ public:
   /**
    * @brief Constructor.
    */
-  TizenWebEngineBackForwardList( Ewk_Back_Forward_List* );
+  TizenWebEngineBackForwardList(Ewk_Back_Forward_List*);
 
   /**
    * @brief Destructor.
@@ -50,38 +49,52 @@ public:
   ~TizenWebEngineBackForwardList();
 
   /**
-   * @brief Returns the current item in the @a list.
-   *
-   * @param[in] list The back-forward list instance
-   *
-   * @return The current item in the @a list,\n
-   *         otherwise @c NULL in case of an error
+   * @brief Assignment operator
    */
-  Dali::WebEngineBackForwardListItem& GetCurrentItem() const override;
+  TizenWebEngineBackForwardList& operator=(const TizenWebEngineBackForwardList& list)
+  {
+    mEwkBackForwardList = list.mEwkBackForwardList;
+    return *this;
+  };
 
   /**
-   * @brief Returns the item at a given @a index relative to the current item.
-   *
-   * @param[in] index The index of the item
-   *
-   * @return The item at a given @a index relative to the current item,\n
-   *         otherwise @c NULL in case of an error
+   * @copydoc Dali::WebEngineBackForwardList::GetCurrentItem()
    */
-  Dali::WebEngineBackForwardListItem& GetItemAtIndex( uint32_t index ) const override;
+  std::unique_ptr<Dali::WebEngineBackForwardListItem> GetCurrentItem() const override;
 
   /**
-   * @brief Returns the length of the back-forward list including the current
-   *        item.
-   *
-   * @return The length of the back-forward list including the current item,\n
-   *         otherwise @c 0 in case of an error
+   * @copydoc Dali::WebEngineBackForwardList::GetPreviousItem()
+   */
+  std::unique_ptr<Dali::WebEngineBackForwardListItem> GetPreviousItem() const override;
+
+  /**
+   * @copydoc Dali::WebEngineBackForwardList::GetNextItem()
+   */
+  std::unique_ptr<Dali::WebEngineBackForwardListItem> GetNextItem() const override;
+
+  /**
+   * @copydoc Dali::WebEngineBackForwardList::GetItemAtIndex()
+   */
+  std::unique_ptr<Dali::WebEngineBackForwardListItem> GetItemAtIndex(uint32_t index) const override;
+
+  /**
+   * @copydoc Dali::WebEngineBackForwardList::GetItemCount()
    */
   uint32_t GetItemCount() const override;
 
-private:
+  /**
+   * @copydoc Dali::WebEngineBackForwardList::GetBackwardItems()
+   */
+  std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> GetBackwardItems(int limit) override;
 
-  Ewk_Back_Forward_List* ewkBackForwardList;
+  /**
+   * @copydoc Dali::WebEngineBackForwardList::GetForwardItems()
+   */
+  std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> GetForwardItems(int limit) override;
+
+private:
 
+  Ewk_Back_Forward_List* mEwkBackForwardList;
 };
 } // namespace Plugin
 } // namespace Dali
index 5ce13a4..1ea7fd7 100755 (executable)
@@ -602,22 +602,24 @@ public:
 class NullWebEngineBackForwardList : public Dali::WebEngineBackForwardList
 {
 public:
-  NullWebEngineBackForwardList(WebEngineBackForwardListItem* pItem)
-    : item(pItem)
-  {
-  }
-  Dali::WebEngineBackForwardListItem& GetCurrentItem() const override
+  NullWebEngineBackForwardList( WebEngineBackForwardListItem* pItem ) : mItem( pItem ) { }
+  std::unique_ptr<Dali::WebEngineBackForwardListItem> GetCurrentItem() const override { return NULL; }
+  std::unique_ptr<Dali::WebEngineBackForwardListItem> GetPreviousItem() const override { return NULL; }
+  std::unique_ptr<Dali::WebEngineBackForwardListItem> GetNextItem() const override { return NULL; }
+  std::unique_ptr<Dali::WebEngineBackForwardListItem> GetItemAtIndex( uint32_t index ) const override { return NULL; }
+  uint32_t GetItemCount() const override { return 1; }
+  std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> GetBackwardItems(int limit)
   {
-    return *item;
+    std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> vec;
+    return vec;
   }
-  Dali::WebEngineBackForwardListItem& GetItemAtIndex(uint32_t index) const override
+  std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> GetForwardItems(int limit)
   {
-    return *item;
+    std::vector<std::unique_ptr<Dali::WebEngineBackForwardListItem>> vec;
+    return vec;
   }
-  uint32_t GetItemCount() const override { return 1; }
-
 private:
-  WebEngineBackForwardListItem* item;
+  WebEngineBackForwardListItem* mItem;
 };
 
 Dali::WebEngineBackForwardList& TizenWebEngineLWE::GetBackForwardList() const