Diff
Modified: trunk/Source/WebKit2/ChangeLog (131459 => 131460)
--- trunk/Source/WebKit2/ChangeLog 2012-10-16 15:51:25 UTC (rev 131459)
+++ trunk/Source/WebKit2/ChangeLog 2012-10-16 16:08:00 UTC (rev 131460)
@@ -1,3 +1,62 @@
+2012-10-16 Mikhail Pozdnyakov <[email protected]>
+
+ [EFL][WK2] Inherit Ewk_Download_Job, Ewk_Back_Forward_List_Item, Ewk_Url_Response, Ewk_Navigation_Policy_Decision from RefCounted
+ https://bugs.webkit.org/show_bug.cgi?id=99455
+
+ Reviewed by Kenneth Rohde Christiansen.
+
+ The API objects mentioned in bug title are inherited from WTF::RefCounted which made it possible
+ to use smart pointers with them.
+
+ * UIProcess/API/efl/PageClientImpl.cpp:
+ (WebKit::PageClientImpl::handleDownloadRequest):
+ * UIProcess/API/efl/ewk_back_forward_list.cpp:
+ (_Ewk_Back_Forward_List::_Ewk_Back_Forward_List):
+ (addItemToWrapperCache):
+ (ewk_back_forward_list_changed):
+ * UIProcess/API/efl/ewk_back_forward_list_item.cpp:
+ (ewk_back_forward_list_item_ref):
+ (ewk_back_forward_list_item_unref):
+ * UIProcess/API/efl/ewk_back_forward_list_item_private.h:
+ (_Ewk_Back_Forward_List_Item):
+ (_Ewk_Back_Forward_List_Item::_Ewk_Back_Forward_List_Item):
+ * UIProcess/API/efl/ewk_context.cpp:
+ (_Ewk_Context):
+ (_Ewk_Context::~_Ewk_Context):
+ (ewk_context_download_job_add):
+ (ewk_context_download_job_get):
+ (ewk_context_download_job_remove):
+ * UIProcess/API/efl/ewk_context_download_client.cpp:
+ (didReceiveResponse):
+ * UIProcess/API/efl/ewk_download_job.cpp:
+ (ewk_download_job_ref):
+ (ewk_download_job_unref):
+ (ewk_download_job_response_get):
+ (ewk_download_job_estimated_progress_get):
+ * UIProcess/API/efl/ewk_download_job_private.h:
+ (_Ewk_Download_Job):
+ (_Ewk_Download_Job::_Ewk_Download_Job):
+ * UIProcess/API/efl/ewk_navigation_data_private.h:
+ * UIProcess/API/efl/ewk_navigation_policy_decision.cpp:
+ (ewk_navigation_policy_decision_ref):
+ (ewk_navigation_policy_decision_unref):
+ * UIProcess/API/efl/ewk_navigation_policy_decision_private.h:
+ (_Ewk_Navigation_Policy_Decision):
+ (_Ewk_Navigation_Policy_Decision::_Ewk_Navigation_Policy_Decision):
+ (_Ewk_Navigation_Policy_Decision::~_Ewk_Navigation_Policy_Decision):
+ * UIProcess/API/efl/ewk_url_response.cpp:
+ (ewk_url_response_ref):
+ (ewk_url_response_unref):
+ * UIProcess/API/efl/ewk_url_response_private.h:
+ (_Ewk_Url_Response):
+ (_Ewk_Url_Response::_Ewk_Url_Response):
+ * UIProcess/API/efl/ewk_view_policy_client.cpp:
+ (decidePolicyForNavigationAction):
+ (decidePolicyForNewWindowAction):
+ * UIProcess/API/efl/ewk_view_resource_load_client.cpp:
+ (didSendRequestForResource):
+ (didReceiveResponseForResource):
+
2012-10-16 Sudarsana Nagineni <[email protected]>
[WK2][EFL] Crash in _ewk_view_on_favicon_changed()
Modified: trunk/Source/WebKit2/UIProcess/API/efl/PageClientImpl.cpp (131459 => 131460)
--- trunk/Source/WebKit2/UIProcess/API/efl/PageClientImpl.cpp 2012-10-16 15:51:25 UTC (rev 131459)
+++ trunk/Source/WebKit2/UIProcess/API/efl/PageClientImpl.cpp 2012-10-16 16:08:00 UTC (rev 131460)
@@ -283,9 +283,8 @@
void PageClientImpl::handleDownloadRequest(DownloadProxy* download)
{
- Ewk_Download_Job* ewkDownload = ewk_download_job_new(download, m_viewWidget);
- ewk_context_download_job_add(ewk_view_context_get(m_viewWidget), ewkDownload);
- ewk_download_job_unref(ewkDownload);
+ RefPtr<Ewk_Download_Job> ewkDownload = adoptRef(ewk_download_job_new(download, m_viewWidget));
+ ewk_context_download_job_add(ewk_view_context_get(m_viewWidget), ewkDownload.get());
}
#if USE(TILED_BACKING_STORE)
Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_back_forward_list.cpp (131459 => 131460)
--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_back_forward_list.cpp 2012-10-16 15:51:25 UTC (rev 131459)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_back_forward_list.cpp 2012-10-16 16:08:00 UTC (rev 131460)
@@ -35,7 +35,7 @@
using namespace WebKit;
-typedef HashMap<WKBackForwardListItemRef, Ewk_Back_Forward_List_Item*> ItemsMap;
+typedef HashMap<WKBackForwardListItemRef, RefPtr<Ewk_Back_Forward_List_Item> > ItemsMap;
/**
* \struct _Ewk_Back_Forward_List
@@ -48,14 +48,6 @@
_Ewk_Back_Forward_List(WKBackForwardListRef listRef)
: wkList(listRef)
{ }
-
- ~_Ewk_Back_Forward_List()
- {
- ItemsMap::iterator it = wrapperCache.begin();
- ItemsMap::iterator end = wrapperCache.end();
- for (; it != end; ++it)
- ewk_back_forward_list_item_unref(it->value);
- }
};
#define EWK_BACK_FORWARD_LIST_WK_GET_OR_RETURN(list, wkList_, ...) \
@@ -75,13 +67,13 @@
EINA_SAFETY_ON_NULL_RETURN_VAL(list, 0);
EINA_SAFETY_ON_NULL_RETURN_VAL(wkItem, 0);
- Ewk_Back_Forward_List_Item* item = list->wrapperCache.get(wkItem);
+ RefPtr<Ewk_Back_Forward_List_Item> item = list->wrapperCache.get(wkItem);
if (!item) {
- item = ewk_back_forward_list_item_new(wkItem);
+ item = adoptRef(ewk_back_forward_list_item_new(wkItem));
list->wrapperCache.set(wkItem, item);
}
- return item;
+ return item.get();
}
static inline Eina_List* createEinaList(const Ewk_Back_Forward_List* list, WKArrayRef wkList)
@@ -174,8 +166,7 @@
const size_t removedItemsSize = wkRemovedItems ? WKArrayGetSize(wkRemovedItems) : 0;
for (size_t i = 0; i < removedItemsSize; ++i) {
WKBackForwardListItemRef wkItem = static_cast<WKBackForwardListItemRef>(WKArrayGetItemAtIndex(wkRemovedItems, i));
- if (Ewk_Back_Forward_List_Item* item = list->wrapperCache.take(wkItem))
- ewk_back_forward_list_item_unref(item);
+ list->wrapperCache.remove(wkItem);
}
}
Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_back_forward_list_item.cpp (131459 => 131460)
--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_back_forward_list_item.cpp 2012-10-16 15:51:25 UTC (rev 131459)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_back_forward_list_item.cpp 2012-10-16 16:08:00 UTC (rev 131460)
@@ -28,32 +28,10 @@
#include "WKAPICast.h"
#include "WKBackForwardListItem.h"
-#include "WKEinaSharedString.h"
+#include "ewk_back_forward_list_item_private.h"
using namespace WebKit;
-/**
- * \struct _Ewk_Back_Forward_List
- * @brief Contains the Back Forward List data.
- */
-struct _Ewk_Back_Forward_List_Item {
- unsigned int __ref; /**< the reference count of the object */
- WKRetainPtr<WKBackForwardListItemRef> wkItem;
- mutable WKEinaSharedString url;
- mutable WKEinaSharedString title;
- mutable WKEinaSharedString originalURL;
-
- _Ewk_Back_Forward_List_Item(WKBackForwardListItemRef itemRef)
- : __ref(1)
- , wkItem(itemRef)
- { }
-
- ~_Ewk_Back_Forward_List_Item()
- {
- ASSERT(!__ref);
- }
-};
-
#define EWK_BACK_FORWARD_LIST_ITEM_WK_GET_OR_RETURN(item, wkItem_, ...) \
if (!(item)) { \
EINA_LOG_CRIT("item is NULL."); \
@@ -68,7 +46,7 @@
Ewk_Back_Forward_List_Item* ewk_back_forward_list_item_ref(Ewk_Back_Forward_List_Item* item)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(item, 0);
- ++item->__ref;
+ item->ref();
return item;
}
@@ -77,10 +55,7 @@
{
EINA_SAFETY_ON_NULL_RETURN(item);
- if (--item->__ref)
- return;
-
- delete item;
+ item->deref();
}
const char* ewk_back_forward_list_item_url_get(const Ewk_Back_Forward_List_Item* item)
Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_back_forward_list_item_private.h (131459 => 131460)
--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_back_forward_list_item_private.h 2012-10-16 15:51:25 UTC (rev 131459)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_back_forward_list_item_private.h 2012-10-16 16:08:00 UTC (rev 131460)
@@ -26,8 +26,22 @@
#ifndef ewk_back_forward_list_item_private_h
#define ewk_back_forward_list_item_private_h
+#include "WKEinaSharedString.h"
#include <WebKit2/WKBase.h>
+/**
+ * \struct _Ewk_Back_Forward_List
+ * @brief Contains the Back Forward List data.
+ */
+struct _Ewk_Back_Forward_List_Item : public RefCounted<_Ewk_Back_Forward_List_Item> {
+ WKRetainPtr<WKBackForwardListItemRef> wkItem;
+ mutable WKEinaSharedString url;
+ mutable WKEinaSharedString title;
+ mutable WKEinaSharedString originalURL;
+
+ _Ewk_Back_Forward_List_Item(WKBackForwardListItemRef itemRef) : wkItem(itemRef) { }
+};
+
typedef struct _Ewk_Back_Forward_List_Item Ewk_Back_Forward_List_Item;
Ewk_Back_Forward_List_Item* ewk_back_forward_list_item_new(WKBackForwardListItemRef wkBackForwardListItemRef);
Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_context.cpp (131459 => 131460)
--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_context.cpp 2012-10-16 15:51:25 UTC (rev 131459)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_context.cpp 2012-10-16 16:08:00 UTC (rev 131460)
@@ -79,7 +79,7 @@
#if ENABLE(VIBRATION)
RefPtr<VibrationProvider> vibrationProvider;
#endif
- HashMap<uint64_t, Ewk_Download_Job*> downloadJobs;
+ HashMap<uint64_t, RefPtr<Ewk_Download_Job> > downloadJobs;
WKRetainPtr<WKSoupRequestManagerRef> requestManager;
URLSchemeHandlerMap urlSchemeHandlers;
@@ -128,11 +128,6 @@
if (faviconDatabase)
ewk_favicon_database_free(faviconDatabase);
-
- HashMap<uint64_t, Ewk_Download_Job*>::iterator it = downloadJobs.begin();
- HashMap<uint64_t, Ewk_Download_Job*>::iterator end = downloadJobs.end();
- for ( ; it != end; ++it)
- ewk_download_job_unref(it->value);
}
};
@@ -210,7 +205,7 @@
if (ewkContext->downloadJobs.contains(downloadId))
return;
- ewkContext->downloadJobs.add(downloadId, ewk_download_job_ref(ewkDownload));
+ ewkContext->downloadJobs.add(downloadId, ewkDownload);
}
/**
@@ -222,7 +217,7 @@
{
EINA_SAFETY_ON_NULL_RETURN_VAL(ewkContext, 0);
- return ewkContext->downloadJobs.get(downloadId);
+ return ewkContext->downloadJobs.get(downloadId).get();
}
/**
@@ -233,9 +228,7 @@
void ewk_context_download_job_remove(Ewk_Context* ewkContext, uint64_t downloadId)
{
EINA_SAFETY_ON_NULL_RETURN(ewkContext);
- Ewk_Download_Job* download = ewkContext->downloadJobs.take(downloadId);
- if (download)
- ewk_download_job_unref(download);
+ ewkContext->downloadJobs.remove(downloadId);
}
/**
Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_context_download_client.cpp (131459 => 131460)
--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_context_download_client.cpp 2012-10-16 15:51:25 UTC (rev 131459)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_context_download_client.cpp 2012-10-16 16:08:00 UTC (rev 131460)
@@ -68,9 +68,8 @@
{
Ewk_Download_Job* download = ewk_context_download_job_get(toEwkContext(clientInfo), toImpl(wkDownload)->downloadID());
ASSERT(download);
- Ewk_Url_Response* response = ewk_url_response_new(toImpl(wkResponse)->resourceResponse());
- ewk_download_job_response_set(download, response);
- ewk_url_response_unref(response);
+ RefPtr<Ewk_Url_Response> response = adoptRef(ewk_url_response_new(toImpl(wkResponse)->resourceResponse()));
+ ewk_download_job_response_set(download, response.get());
}
static void didCreateDestination(WKContextRef, WKDownloadRef wkDownload, WKStringRef /*path*/, const void* clientInfo)
Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_download_job.cpp (131459 => 131460)
--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_download_job.cpp 2012-10-16 15:51:25 UTC (rev 131459)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_download_job.cpp 2012-10-16 16:08:00 UTC (rev 131460)
@@ -28,56 +28,18 @@
#include "DownloadProxy.h"
#include "WKAPICast.h"
-#include "WKEinaSharedString.h"
#include "WKRetainPtr.h"
#include "WebURLRequest.h"
#include "ewk_download_job_private.h"
-#include "ewk_url_request_private.h"
#include <Ecore.h>
using namespace WebKit;
-/**
- * \struct _Ewk_Download_Job
- * @brief Contains the download data.
- */
-struct _Ewk_Download_Job {
- unsigned int __ref; /**< the reference count of the object */
- DownloadProxy* downloadProxy;
- Evas_Object* view;
- Ewk_Download_Job_State state;
- RefPtr<Ewk_Url_Request> request;
- Ewk_Url_Response* response;
- double startTime;
- double endTime;
- uint64_t downloaded; /**< length already downloaded */
- WKEinaSharedString destination;
- WKEinaSharedString suggestedFilename;
-
- _Ewk_Download_Job(DownloadProxy* download, Evas_Object* ewkView)
- : __ref(1)
- , downloadProxy(download)
- , view(ewkView)
- , state(EWK_DOWNLOAD_JOB_STATE_NOT_STARTED)
- , response(0)
- , startTime(-1)
- , endTime(-1)
- , downloaded(0)
- { }
-
- ~_Ewk_Download_Job()
- {
- ASSERT(!__ref);
- if (response)
- ewk_url_response_unref(response);
- }
-};
-
Ewk_Download_Job* ewk_download_job_ref(Ewk_Download_Job* download)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(download, 0);
- ++download->__ref;
+ download->ref();
return download;
}
@@ -86,10 +48,7 @@
{
EINA_SAFETY_ON_NULL_RETURN(download);
- if (--download->__ref)
- return;
-
- delete download;
+ download->deref();
}
/**
@@ -140,7 +99,7 @@
{
EINA_SAFETY_ON_NULL_RETURN_VAL(download, 0);
- return download->response;
+ return download->response.get();
}
const char* ewk_download_job_destination_get(const Ewk_Download_Job* download)
@@ -187,7 +146,7 @@
if (!download->response)
return 0;
- const unsigned long contentLength = ewk_url_response_content_length_get(download->response);
+ const unsigned long contentLength = ewk_url_response_content_length_get(download->response.get());
if (!contentLength)
return 0;
Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_download_job_private.h (131459 => 131460)
--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_download_job_private.h 2012-10-16 15:51:25 UTC (rev 131459)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_download_job_private.h 2012-10-16 16:08:00 UTC (rev 131460)
@@ -27,16 +27,45 @@
#define ewk_download_job_private_h
#include "WKBase.h"
+#include "WKEinaSharedString.h"
+#include "ewk_url_request_private.h"
+#include "ewk_url_response_private.h"
#include <Evas.h>
-typedef struct _Ewk_Download_Job Ewk_Download_Job;
-typedef struct _Ewk_Url_Response Ewk_Url_Response;
-typedef struct _Ewk_Error Ewk_Error;
-
namespace WebKit {
class DownloadProxy;
}
+/**
+ * \struct _Ewk_Download_Job
+ * @brief Contains the download data.
+ */
+struct _Ewk_Download_Job : public RefCounted<_Ewk_Download_Job> {
+ WebKit::DownloadProxy* downloadProxy;
+ Evas_Object* view;
+ Ewk_Download_Job_State state;
+ RefPtr<Ewk_Url_Request> request;
+ RefPtr<Ewk_Url_Response> response;
+ double startTime;
+ double endTime;
+ uint64_t downloaded; /**< length already downloaded */
+ WKEinaSharedString destination;
+ WKEinaSharedString suggestedFilename;
+
+ _Ewk_Download_Job(WebKit::DownloadProxy* download, Evas_Object* ewkView)
+ : downloadProxy(download)
+ , view(ewkView)
+ , state(EWK_DOWNLOAD_JOB_STATE_NOT_STARTED)
+ , response(0)
+ , startTime(-1)
+ , endTime(-1)
+ , downloaded(0)
+ { }
+};
+
+typedef struct _Ewk_Download_Job Ewk_Download_Job;
+typedef struct _Ewk_Error Ewk_Error;
+
Ewk_Download_Job* ewk_download_job_new(WebKit::DownloadProxy*, Evas_Object* ewkView);
uint64_t ewk_download_job_id_get(const Ewk_Download_Job*);
Evas_Object* ewk_download_job_view_get(const Ewk_Download_Job*);
Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_navigation_data_private.h (131459 => 131460)
--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_navigation_data_private.h 2012-10-16 15:51:25 UTC (rev 131459)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_navigation_data_private.h 2012-10-16 16:08:00 UTC (rev 131460)
@@ -32,6 +32,7 @@
#include "WKRetainPtr.h"
#include "ewk_private.h"
#include "ewk_url_request_private.h"
+#include <wtf/RefCounted.h>
/**
* \struct _Ewk_Navigation_Data
Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_navigation_policy_decision.cpp (131459 => 131460)
--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_navigation_policy_decision.cpp 2012-10-16 15:51:25 UTC (rev 131459)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_navigation_policy_decision.cpp 2012-10-16 16:08:00 UTC (rev 131460)
@@ -26,56 +26,17 @@
#include "config.h"
#include "ewk_navigation_policy_decision.h"
-#include "WKAPICast.h"
-#include "WKEinaSharedString.h"
-#include "WKFramePolicyListener.h"
-#include "WKRetainPtr.h"
#include "ewk_navigation_policy_decision_private.h"
#include "ewk_private.h"
#include "ewk_url_request_private.h"
using namespace WebKit;
-/**
- * \struct _Ewk_Navigation_Policy_Decision
- * @brief Contains the navigation policy decision data.
- */
-struct _Ewk_Navigation_Policy_Decision {
- unsigned int __ref; /**< the reference count of the object */
- WKRetainPtr<WKFramePolicyListenerRef> listener;
- bool actedUponByClient;
- Ewk_Navigation_Type navigationType;
- Event_Mouse_Button mouseButton;
- Event_Modifier_Keys modifiers;
- RefPtr<Ewk_Url_Request> request;
- WKEinaSharedString frameName;
-
- _Ewk_Navigation_Policy_Decision(WKFramePolicyListenerRef _listener, Ewk_Navigation_Type _navigationType, Event_Mouse_Button _mouseButton, Event_Modifier_Keys _modifiers, PassRefPtr<Ewk_Url_Request> _request, const char* _frameName)
- : __ref(1)
- , listener(_listener)
- , actedUponByClient(false)
- , navigationType(_navigationType)
- , mouseButton(_mouseButton)
- , modifiers(_modifiers)
- , request(_request)
- , frameName(_frameName)
- { }
-
- ~_Ewk_Navigation_Policy_Decision()
- {
- ASSERT(!__ref);
-
- // This is the default choice for all policy decisions in WebPageProxy.cpp.
- if (!actedUponByClient)
- WKFramePolicyListenerUse(listener.get());
- }
-};
-
Ewk_Navigation_Policy_Decision* ewk_navigation_policy_decision_ref(Ewk_Navigation_Policy_Decision* decision)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(decision, 0);
- ++decision->__ref;
+ decision->ref();
return decision;
}
@@ -84,10 +45,7 @@
{
EINA_SAFETY_ON_NULL_RETURN(decision);
- if (--decision->__ref)
- return;
-
- delete decision;
+ decision->deref();
}
Ewk_Navigation_Type ewk_navigation_policy_navigation_type_get(const Ewk_Navigation_Policy_Decision* decision)
Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_navigation_policy_decision_private.h (131459 => 131460)
--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_navigation_policy_decision_private.h 2012-10-16 15:51:25 UTC (rev 131459)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_navigation_policy_decision_private.h 2012-10-16 16:08:00 UTC (rev 131460)
@@ -26,10 +26,46 @@
#ifndef ewk_navigation_policy_decision_private_h
#define ewk_navigation_policy_decision_private_h
+#include "WKAPICast.h"
#include "WKBase.h"
+#include "WKEinaSharedString.h"
#include "WKEvent.h"
+#include "WKFramePolicyListener.h"
#include "WKPageLoadTypes.h"
+#include "WKRetainPtr.h"
+#include "ewk_url_request_private.h"
+/**
+ * \struct _Ewk_Navigation_Policy_Decision
+ * @brief Contains the navigation policy decision data.
+ */
+struct _Ewk_Navigation_Policy_Decision : public RefCounted<_Ewk_Navigation_Policy_Decision> {
+ WKRetainPtr<WKFramePolicyListenerRef> listener;
+ bool actedUponByClient;
+ Ewk_Navigation_Type navigationType;
+ Event_Mouse_Button mouseButton;
+ Event_Modifier_Keys modifiers;
+ RefPtr<Ewk_Url_Request> request;
+ WKEinaSharedString frameName;
+
+ _Ewk_Navigation_Policy_Decision(WKFramePolicyListenerRef listener, Ewk_Navigation_Type navigationType, Event_Mouse_Button mouseButton, Event_Modifier_Keys modifiers, PassRefPtr<Ewk_Url_Request> request, const char* frameName)
+ : listener(listener)
+ , actedUponByClient(false)
+ , navigationType(navigationType)
+ , mouseButton(mouseButton)
+ , modifiers(modifiers)
+ , request(request)
+ , frameName(frameName)
+ { }
+
+ ~_Ewk_Navigation_Policy_Decision()
+ {
+ // This is the default choice for all policy decisions in WebPageProxy.cpp.
+ if (!actedUponByClient)
+ WKFramePolicyListenerUse(listener.get());
+ }
+};
+
typedef struct _Ewk_Navigation_Policy_Decision Ewk_Navigation_Policy_Decision;
Ewk_Navigation_Policy_Decision* ewk_navigation_policy_decision_new(WKFrameNavigationType navigationType, WKEventMouseButton mouseButton, WKEventModifiers modifiers, WKURLRequestRef request, const char* frameName, WKFramePolicyListenerRef listener);
Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_url_response.cpp (131459 => 131460)
--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_url_response.cpp 2012-10-16 15:51:25 UTC (rev 131459)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_url_response.cpp 2012-10-16 16:08:00 UTC (rev 131460)
@@ -26,42 +26,15 @@
#include "config.h"
#include "ewk_url_response.h"
-#include "WKAPICast.h"
-#include "WKEinaSharedString.h"
-#include "WKURLResponse.h"
#include "ewk_url_response_private.h"
#include <wtf/text/CString.h>
using namespace WebKit;
-/**
- * \struct _Ewk_Url_Response
- * @brief Contains the URL response data.
- */
-struct _Ewk_Url_Response {
- unsigned int __ref; /**< the reference count of the object */
- WebCore::ResourceResponse coreResponse;
-
- WKEinaSharedString url;
- WKEinaSharedString mimeType;
-
- _Ewk_Url_Response(const WebCore::ResourceResponse& _coreResponse)
- : __ref(1)
- , coreResponse(_coreResponse)
- , url(AdoptWK, WKURLResponseCopyURL(toAPI(coreResponse)))
- , mimeType(AdoptWK, WKURLResponseCopyMIMEType(toAPI(coreResponse)))
- { }
-
- ~_Ewk_Url_Response()
- {
- ASSERT(!__ref);
- }
-};
-
Ewk_Url_Response* ewk_url_response_ref(Ewk_Url_Response* response)
{
EINA_SAFETY_ON_NULL_RETURN_VAL(response, 0);
- ++response->__ref;
+ response->ref();
return response;
}
@@ -70,10 +43,7 @@
{
EINA_SAFETY_ON_NULL_RETURN(response);
- if (--response->__ref)
- return;
-
- delete response;
+ response->deref();
}
const char* ewk_url_response_url_get(const Ewk_Url_Response* response)
Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_url_response_private.h (131459 => 131460)
--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_url_response_private.h 2012-10-16 15:51:25 UTC (rev 131459)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_url_response_private.h 2012-10-16 16:08:00 UTC (rev 131460)
@@ -26,8 +26,26 @@
#ifndef ewk_url_response_private_h
#define ewk_url_response_private_h
+#include "WKAPICast.h"
+#include "WKEinaSharedString.h"
+#include "WKURLResponse.h"
#include <WebCore/ResourceResponse.h>
+/**
+ * \struct _Ewk_Url_Response
+ * @brief Contains the URL response data.
+ */
+struct _Ewk_Url_Response : public RefCounted<_Ewk_Url_Response> {
+ WebCore::ResourceResponse coreResponse;
+ WKEinaSharedString url;
+ WKEinaSharedString mimeType;
+ _Ewk_Url_Response(const WebCore::ResourceResponse& _coreResponse)
+ : coreResponse(_coreResponse)
+ , url(AdoptWK, WKURLResponseCopyURL(WebKit::toAPI(coreResponse)))
+ , mimeType(AdoptWK, WKURLResponseCopyMIMEType(WebKit::toAPI(coreResponse)))
+ { }
+};
+
typedef struct _Ewk_Url_Response Ewk_Url_Response;
Ewk_Url_Response* ewk_url_response_new(const WebCore::ResourceResponse& resourceResponse);
Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_view_policy_client.cpp (131459 => 131460)
--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_view_policy_client.cpp 2012-10-16 15:51:25 UTC (rev 131459)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_view_policy_client.cpp 2012-10-16 16:08:00 UTC (rev 131460)
@@ -44,16 +44,14 @@
static void decidePolicyForNavigationAction(WKPageRef, WKFrameRef, WKFrameNavigationType navigationType, WKEventModifiers modifiers, WKEventMouseButton mouseButton, WKURLRequestRef request, WKFramePolicyListenerRef listener, WKTypeRef /*userData*/, const void* clientInfo)
{
- Ewk_Navigation_Policy_Decision* decision = ewk_navigation_policy_decision_new(navigationType, mouseButton, modifiers, request, 0, listener);
- ewk_view_navigation_policy_decision(toEwkView(clientInfo), decision);
- ewk_navigation_policy_decision_unref(decision);
+ RefPtr<Ewk_Navigation_Policy_Decision> decision = adoptRef(ewk_navigation_policy_decision_new(navigationType, mouseButton, modifiers, request, 0, listener));
+ ewk_view_navigation_policy_decision(toEwkView(clientInfo), decision.get());
}
static void decidePolicyForNewWindowAction(WKPageRef, WKFrameRef, WKFrameNavigationType navigationType, WKEventModifiers modifiers, WKEventMouseButton mouseButton, WKURLRequestRef request, WKStringRef frameName, WKFramePolicyListenerRef listener, WKTypeRef /*userData*/, const void* clientInfo)
{
- Ewk_Navigation_Policy_Decision* decision = ewk_navigation_policy_decision_new(navigationType, mouseButton, modifiers, request, toImpl(frameName)->string().utf8().data(), listener);
- ewk_view_new_window_policy_decision(toEwkView(clientInfo), decision);
- ewk_navigation_policy_decision_unref(decision);
+ RefPtr<Ewk_Navigation_Policy_Decision> decision = adoptRef(ewk_navigation_policy_decision_new(navigationType, mouseButton, modifiers, request, toImpl(frameName)->string().utf8().data(), listener));
+ ewk_view_new_window_policy_decision(toEwkView(clientInfo), decision.get());
}
static void decidePolicyForResponseCallback(WKPageRef, WKFrameRef frame, WKURLResponseRef response, WKURLRequestRef, WKFramePolicyListenerRef listener, WKTypeRef /*userData*/, const void* /*clientInfo*/)
Modified: trunk/Source/WebKit2/UIProcess/API/efl/ewk_view_resource_load_client.cpp (131459 => 131460)
--- trunk/Source/WebKit2/UIProcess/API/efl/ewk_view_resource_load_client.cpp 2012-10-16 15:51:25 UTC (rev 131459)
+++ trunk/Source/WebKit2/UIProcess/API/efl/ewk_view_resource_load_client.cpp 2012-10-16 16:08:00 UTC (rev 131460)
@@ -65,17 +65,14 @@
static void didSendRequestForResource(WKPageRef, WKFrameRef, uint64_t resourceIdentifier, WKURLRequestRef wkRequest, WKURLResponseRef wkRedirectResponse, const void* clientInfo)
{
RefPtr<Ewk_Url_Request> request = adoptRef(ewk_url_request_new(wkRequest));
- Ewk_Url_Response* redirectResponse = wkRedirectResponse ? ewk_url_response_new(toImpl(wkRedirectResponse)->resourceResponse()) : 0;
- ewk_view_resource_request_sent(toEwkView(clientInfo), resourceIdentifier, request.get(), redirectResponse);
- if (redirectResponse)
- ewk_url_response_unref(redirectResponse);
+ RefPtr<Ewk_Url_Response> redirectResponse = wkRedirectResponse ? adoptRef(ewk_url_response_new(toImpl(wkRedirectResponse)->resourceResponse())) : 0;
+ ewk_view_resource_request_sent(toEwkView(clientInfo), resourceIdentifier, request.get(), redirectResponse.get());
}
static void didReceiveResponseForResource(WKPageRef, WKFrameRef, uint64_t resourceIdentifier, WKURLResponseRef wkResponse, const void* clientInfo)
{
- Ewk_Url_Response* response = ewk_url_response_new(toImpl(wkResponse)->resourceResponse());
- ewk_view_resource_load_response(toEwkView(clientInfo), resourceIdentifier, response);
- ewk_url_response_unref(response);
+ RefPtr<Ewk_Url_Response> response = adoptRef(ewk_url_response_new(toImpl(wkResponse)->resourceResponse()));
+ ewk_view_resource_load_response(toEwkView(clientInfo), resourceIdentifier, response.get());
}
static void didFinishLoadForResource(WKPageRef, WKFrameRef, uint64_t resourceIdentifier, const void* clientInfo)