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
// 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
/**
* @brief Constructor.
*/
- TizenWebEngineBackForwardListItem( Ewk_Back_Forward_List_Item* );
+ TizenWebEngineBackForwardListItem(Ewk_Back_Forward_List_Item* item, bool willItemBeDeleted = false);
/**
* @brief Destructor.
~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
namespace Plugin
{
-TizenWebEngineBackForwardList::TizenWebEngineBackForwardList( Ewk_Back_Forward_List* list )
- : ewkBackForwardList( list )
+TizenWebEngineBackForwardList::TizenWebEngineBackForwardList(Ewk_Back_Forward_List* list)
+ : mEwkBackForwardList( list )
{
}
{
}
-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
*/
// 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
{
/**
* @brief Constructor.
*/
- TizenWebEngineBackForwardList( Ewk_Back_Forward_List* );
+ TizenWebEngineBackForwardList(Ewk_Back_Forward_List*);
/**
* @brief Destructor.
~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
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