WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
patch
bug112364 (text/plain), 6.57 KB, created by
Mikhail Pozdnyakov
on 2013-03-14 14:14:18 PDT
(
hide
)
Description:
patch
Filename:
MIME Type:
Creator:
Mikhail Pozdnyakov
Created:
2013-03-14 14:14:18 PDT
Size:
6.57 KB
patch
obsolete
>commit a0bf17b1ed7a05196a5c66bc4e1bdcae96401994 >Author: Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> >Date: Thu Mar 14 23:08:22 2013 +0200 > > bug112364 > >diff --git a/Source/WebKit2/ChangeLog b/Source/WebKit2/ChangeLog >index 22140e9..8c2a901 100644 >--- a/Source/WebKit2/ChangeLog >+++ b/Source/WebKit2/ChangeLog >@@ -1,3 +1,29 @@ >+2013-03-14 Mikhail Pozdnyakov <mikhail.pozdnyakov@intel.com> >+ >+ [WK2][EFL] There should be only one EwkPageGroup instance per WKPageGroupRef >+ https://bugs.webkit.org/show_bug.cgi?id=112364 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ Added EwkPageGroup::findOrCreateWrapper() method which is consistent >+ with EwkContext class. >+ As a result there can be only one EwkPageGroup instance per WKPageGroup >+ instance (which is right as EwkPageGroup is just a wrapper around >+ WKPageGroup). >+ >+ * UIProcess/API/C/efl/WKView.cpp: >+ (createWKView): >+ * UIProcess/API/efl/ewk_page_group.cpp: >+ (pageGroupMap): >+ (EwkPageGroup::findOrCreateWrapper): >+ (EwkPageGroup::create): >+ (EwkPageGroup::EwkPageGroup): >+ (EwkPageGroup::~EwkPageGroup): >+ * UIProcess/API/efl/ewk_page_group_private.h: >+ (EwkPageGroup): >+ * UIProcess/efl/WebInspectorProxyEfl.cpp: >+ (WebKit::WebInspectorProxy::platformCreateInspectorPage): >+ > 2013-03-14 Abhishek Arya <inferno@chromium.org> > > Replace static_casts with to* helper functions. >diff --git a/Source/WebKit2/UIProcess/API/C/efl/WKView.cpp b/Source/WebKit2/UIProcess/API/C/efl/WKView.cpp >index dcd3e2c..4434dd9 100644 >--- a/Source/WebKit2/UIProcess/API/C/efl/WKView.cpp >+++ b/Source/WebKit2/UIProcess/API/C/efl/WKView.cpp >@@ -32,7 +32,8 @@ using namespace WebKit; > static inline WKViewRef createWKView(Evas* canvas, WKContextRef contextRef, WKPageGroupRef pageGroupRef, EwkView::ViewBehavior behavior) > { > RefPtr<EwkContext> context = contextRef ? EwkContext::findOrCreateWrapper(contextRef) : EwkContext::defaultContext(); >- RefPtr<EwkPageGroup> pageGroup = EwkPageGroup::create(pageGroupRef); >+ RefPtr<EwkPageGroup> pageGroup = pageGroupRef ? EwkPageGroup::findOrCreateWrapper(pageGroupRef) : EwkPageGroup::create(); >+ > Evas_Object* evasObject = EwkView::createEvasObject(canvas, context, pageGroup, behavior); > if (!evasObject) > return 0; >diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_page_group.cpp b/Source/WebKit2/UIProcess/API/efl/ewk_page_group.cpp >index ba238e4..84cd567 100644 >--- a/Source/WebKit2/UIProcess/API/efl/ewk_page_group.cpp >+++ b/Source/WebKit2/UIProcess/API/efl/ewk_page_group.cpp >@@ -37,19 +37,46 @@ using namespace WebKit; > > const char EwkPageGroup::defaultIdentifier[] = "defaultPageGroupIdentifier"; > >+typedef HashMap<WKPageGroupRef, EwkPageGroup*> PageGroupMap; >+ >+static inline PageGroupMap& pageGroupMap() >+{ >+ DEFINE_STATIC_LOCAL(PageGroupMap, map, ()); >+ return map; >+} >+ > static WKTypeRef convertFromCharToWKString(void* data) > { > return WKStringCreateWithUTF8CString(static_cast<char*>(data)); > } > >+PassRefPtr<EwkPageGroup> EwkPageGroup::findOrCreateWrapper(WKPageGroupRef pageGroupRef) >+{ >+ if (pageGroupMap().contains(pageGroupRef)) >+ return pageGroupMap().get(pageGroupRef); >+ >+ return adoptRef(new EwkPageGroup(pageGroupRef)); >+} >+ >+PassRefPtr<EwkPageGroup> EwkPageGroup::create(const String& identifier) >+{ >+ WKRetainPtr<WKStringRef> identifierRef = adoptWK(toCopiedAPI(identifier.isEmpty() ? defaultIdentifier : identifier)); >+ WKRetainPtr<WKPageGroupRef> pageGroupRef = adoptWK(WKPageGroupCreateWithIdentifier(identifierRef.get())); >+ >+ return adoptRef(new EwkPageGroup(pageGroupRef.get())); >+} >+ > EwkPageGroup::EwkPageGroup(WKPageGroupRef pageGroupRef) > : m_pageGroupRef(pageGroupRef) > { >+ PageGroupMap::AddResult result = pageGroupMap().add(pageGroupRef, this); >+ ASSERT_UNUSED(result, result.isNewEntry); > } > >-EwkPageGroup::EwkPageGroup(const String& identifier) >+EwkPageGroup::~EwkPageGroup() > { >- m_pageGroupRef = adoptWK(WKPageGroupCreateWithIdentifier(adoptWK(toCopiedAPI(identifier)).get())); >+ ASSERT(pageGroupMap().get(m_pageGroupRef.get()) == this); >+ pageGroupMap().remove(m_pageGroupRef.get()); > } > > void EwkPageGroup::addUserStyleSheet(const String& source, const String& baseURL, Eina_List* whiteList, Eina_List* blackList, bool mainFrameOnly) >diff --git a/Source/WebKit2/UIProcess/API/efl/ewk_page_group_private.h b/Source/WebKit2/UIProcess/API/efl/ewk_page_group_private.h >index 1e2e2b6..3f92201 100644 >--- a/Source/WebKit2/UIProcess/API/efl/ewk_page_group_private.h >+++ b/Source/WebKit2/UIProcess/API/efl/ewk_page_group_private.h >@@ -40,18 +40,10 @@ class EwkPageGroup : public EwkObject { > public: > EWK_OBJECT_DECLARE(EwkPageGroup) > >- static PassRefPtr<EwkPageGroup> create(WKPageGroupRef pageGroupRef) >- { >- if (!pageGroupRef) >- return adoptRef(new EwkPageGroup(defaultIdentifier)); >+ static PassRefPtr<EwkPageGroup> findOrCreateWrapper(WKPageGroupRef pageGroupRef); >+ static PassRefPtr<EwkPageGroup> create(const String& identifier = String()); > >- return adoptRef(new EwkPageGroup(pageGroupRef)); >- } >- >- static PassRefPtr<EwkPageGroup> create(const String& identifier = String()) >- { >- return adoptRef(new EwkPageGroup(identifier.isEmpty() ? defaultIdentifier : identifier)); >- } >+ ~EwkPageGroup(); > > WKPageGroupRef wkPageGroup() const { return m_pageGroupRef.get(); } > >@@ -59,8 +51,7 @@ public: > void removeAllUserStyleSheets(); > > private: >- explicit EwkPageGroup(WKPageGroupRef pageGroupRef); >- explicit EwkPageGroup(const String& identifier); >+ explicit EwkPageGroup(WKPageGroupRef pageGroupRef); > > static const char defaultIdentifier[]; > >diff --git a/Source/WebKit2/UIProcess/efl/WebInspectorProxyEfl.cpp b/Source/WebKit2/UIProcess/efl/WebInspectorProxyEfl.cpp >index 240cbb3..6d12dfa 100644 >--- a/Source/WebKit2/UIProcess/efl/WebInspectorProxyEfl.cpp >+++ b/Source/WebKit2/UIProcess/efl/WebInspectorProxyEfl.cpp >@@ -101,7 +101,7 @@ WebPageProxy* WebInspectorProxy::platformCreateInspectorPage() > > // FIXME: Refactor to use WKViewRef. > WKContextRef contextRef = toAPI(page()->process()->context()); >- m_inspectorView = EwkView::createEvasObject(ecore_evas_get(m_inspectorWindow), EwkContext::findOrCreateWrapper(contextRef), EwkPageGroup::create(toAPI(inspectorPageGroup())), EwkView::LegacyBehavior); >+ m_inspectorView = EwkView::createEvasObject(ecore_evas_get(m_inspectorWindow), EwkContext::findOrCreateWrapper(contextRef), EwkPageGroup::findOrCreateWrapper(toAPI(inspectorPageGroup())), EwkView::LegacyBehavior); > if (!m_inspectorView) > return 0; >
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 112364
:
193183
|
193311