Closed
Bug 743654
Opened 13 years ago
Closed 12 years ago
replace nsIWinAccessNode on static_cast<nsAccessibleWrap*>
Categories
(Core :: Disability Access APIs, defect)
Core
Disability Access APIs
Tracking
()
RESOLVED
FIXED
People
(Reporter: surkov, Assigned: nickyekaiqi)
References
Details
(Whiteboard: [good first bug][mentor=trev.saunders@gmail.com][lang=c++])
Attachments
(1 file, 6 obsolete files)
(deleted),
patch
|
Details | Diff | Splinter Review |
similar to bug 741701 (do the same for nsHyperTextAccessibleWrap.cpp, CAccessibleHyperText.cpp and nsWinUtils.cpp files)
please remove #include "nsIWinAccessNode.h" from those files (and CAccessibleHyperlink.cpp)
Attachment #613663 -
Flags: feedback?
Attachment #613663 -
Attachment is obsolete: true
Attachment #613663 -
Flags: feedback?
Attachment #613665 -
Flags: feedback?
Reporter | ||
Comment 4•13 years ago
|
||
Comment on attachment 613665 [details] [diff] [review]
patch v2
Review of attachment 613665 [details] [diff] [review]:
-----------------------------------------------------------------
::: accessible/src/msaa/CAccessibleHypertext.cpp
@@ +42,5 @@
>
> #include "AccessibleHypertext_i.c"
>
> #include "nsHyperTextAccessible.h"
> +#include "nsAccessibleWrap.h"
you don't need to include "nsAccessibleWrap.h" because "nsHyperTextAccessible.h" does this
@@ -93,2 @@
> if (hyperText->IsDefunct())
> return CO_E_OBJNOTCONNECTED;
hyperText is not defined then
@@ +93,5 @@
> if (hyperText->IsDefunct())
> return CO_E_OBJNOTCONNECTED;
>
> + nsAccessibleWrap* anchor =
> + static_cast<nsAccessibleWrap*>(thisObj->AnchorAt(aIndex));
thisObj is undefined
GetLinkAt and AnchorAt are methods for different proposes
@@ +101,1 @@
> &instancePtr);
wrong indentation
::: accessible/src/msaa/nsHyperTextAccessibleWrap.cpp
@@ +40,5 @@
>
> #include "nsHyperTextAccessibleWrap.h"
>
> #include "nsEventShell.h"
> +#include "nsAccessibleWrap.h"
you don't need it
@@ +58,5 @@
>
> if (eventType == nsIAccessibleEvent::EVENT_TEXT_REMOVED ||
> eventType == nsIAccessibleEvent::EVENT_TEXT_INSERTED) {
> + nsAccessibleWrap* anchor =
> + static_cast<nsAccessibleWrap*>(thisObj->AnchorAt(aIndex));
you just copy/paste which is wrong
::: accessible/src/msaa/nsWinUtils.cpp
@@ +98,5 @@
>
> PRUint32 idx = 0;
> for (; idx < length; ++idx) {
> + nsAccessibleWrap* anchor =
> + static_cast<nsAccessibleWrap*>(thisObj->AnchorAt(aIndex));
wrong
@@ +108,1 @@
> &instancePtr);
indent please
Attachment #613665 -
Flags: feedback? → feedback-
Sorry! I did not notice these details last night. Now should be much better. For the first two files, I understand how to modify it now. But for nsWinUtils.cpp, it creates winAccessNode not from nsAccessible this time. So cannot use static_cast to change the type to ns*Wrap. I checked some files, but did not figure it out. Need some help. Thank you!
Attachment #613665 -
Attachment is obsolete: true
Reporter | ||
Comment 6•13 years ago
|
||
Comment on attachment 613932 [details] [diff] [review]
patch v2
Review of attachment 613932 [details] [diff] [review]:
-----------------------------------------------------------------
::: accessible/src/msaa/CAccessibleHypertext.cpp
@@ +102,2 @@
> if (NS_FAILED(rv))
> return E_FAIL;
it doesn't return nsresult but HRESULT. All you should do is just return it
::: accessible/src/msaa/nsHyperTextAccessibleWrap.cpp
@@ +59,5 @@
> eventType == nsIAccessibleEvent::EVENT_TEXT_INSERTED) {
> + nsAccessibleWrap* accessible =
> + static_cast<nsAccessibleWrap*>(aEvent->GetAccessible());
> + if(accessible) {
> + void *instancePtr = NULL;
type* name
@@ +65,1 @@
> &instancePtr);
wrong indentation
@@ +65,2 @@
> &instancePtr);
> + if (NS_SUCCEEDED(rv)) {
HRESULT issue here as well
::: accessible/src/msaa/nsWinUtils.cpp
@@ +99,4 @@
> PRUint32 idx = 0;
> for (; idx < length; ++idx) {
> nsCOMPtr<nsIWinAccessNode> winAccessNode =
> do_QueryElementAt(aGeckoArray, idx, &rv);
try to query to nsRefPtr<nsAccessible> it should work
Attachment #613932 -
Attachment is obsolete: true
Attachment #613967 -
Flags: feedback?
Reporter | ||
Comment 8•13 years ago
|
||
Comment on attachment 613967 [details] [diff] [review]
patch v3
Review of attachment 613967 [details] [diff] [review]:
-----------------------------------------------------------------
::: accessible/src/msaa/CAccessibleHypertext.cpp
@@ +102,2 @@
> if (NS_FAILED(rv))
> + return HRESULT;
I meant IUnknown::QueryInterface returns HRESULT
Attachment #613967 -
Attachment is obsolete: true
Attachment #613967 -
Flags: feedback?
Attachment #614012 -
Flags: feedback-
Attachment #614012 -
Flags: feedback- → feedback?
Reporter | ||
Comment 10•13 years ago
|
||
Comment on attachment 614012 [details] [diff] [review]
patch v4
Review of attachment 614012 [details] [diff] [review]:
-----------------------------------------------------------------
ok, f=me, please get review from Trevor
::: accessible/src/msaa/nsWinUtils.cpp
@@ +97,5 @@
> return E_OUTOFMEMORY;
>
> PRUint32 idx = 0;
> for (; idx < length; ++idx) {
> + nsRefPtr<nsAccessible> winAccessNode =
winAccessNode -> accessible
@@ +104,5 @@
> break;
>
> void *instancePtr = NULL;
> + nsresult rv = winAccessNode->QueryInterface(IID_IUnknown,
> + &instancePtr);
nah, that winAccessNode calls nsISupports::QueryInterface I think, so you should query it to nsAccessibleWrap
Attachment #614012 -
Flags: review?(trev.saunders)
Attachment #614012 -
Flags: feedback?
Attachment #614012 -
Flags: feedback+
Reporter | ||
Comment 11•13 years ago
|
||
(In reply to alexander :surkov from comment #10)
> nah, that winAccessNode calls nsISupports::QueryInterface I think, so you
> should query it to nsAccessibleWrap
query -> cast
Assignee | ||
Comment 12•13 years ago
|
||
Attachment #614012 -
Attachment is obsolete: true
Attachment #614012 -
Flags: review?(trev.saunders)
Attachment #614278 -
Flags: review?(trev.saunders)
Attachment #614278 -
Flags: feedback+
Comment 13•13 years ago
|
||
Comment on attachment 614278 [details] [diff] [review]
patch v5
>+ static_cast<nsAccessibleWrap*>(aEvent->GetAccessible());
>+ if(accessible) {
>+ void* instancePtr = NULL;
>+ HRESULT rv = accessible->QueryInterface(IID_IAccessibleText,
>+ &instancePtr);
>+ if (SUCCEEDED(rv)) {
>+ NS_IF_RELEASE(gTextEvent);
>+ NS_IF_ADDREF(gTextEvent = downcast_accEvent(aEvent);
>
>- (static_cast<IUnknown*>(instancePtr))->Release();
>- }
>- }
>+ (static_cast<IUnknown*>(instancePtr))->Release();
I don't think there's any need for that static cast, you should be able to call Release() on a AccEvent*
>+ nsRefPtr<nsAccessibleWrap> accessible =
>+ static_cast<nsAccessibleWrap>(do_QueryElementAt(aGeckoArray, idx, &rv));
the interactions of a templated return type and static_cast scare me, I'd say your safer to do
nsRefPtr<nsAccessible> acc = do_QueryFoo();
HRESULT rv = (static_cast<nsAccessibleWrap*>(acc))->QueryInterface();
> if (NS_FAILED(rv))
> break;
>
> void *instancePtr = NULL;
>- nsresult rv = winAccessNode->QueryNativeInterface(IID_IUnknown,
>- &instancePtr);
>+ nsresult rv = accessible->QueryInterface(IID_IUnknown,
>+ &instancePtr);
> if (NS_FAILED(rv))
use HRESULT here instead of nsresult
I think there's enough nits to tricky code that I want to see another version.
Attachment #614278 -
Flags: review?(trev.saunders)
Assignee | ||
Comment 14•13 years ago
|
||
(In reply to Trevor Saunders (:tbsaunde) from comment #13)
> Comment on attachment 614278 [details] [diff] [review]
> patch v5
>
> >+ static_cast<nsAccessibleWrap*>(aEvent->GetAccessible());
> >+ if(accessible) {
> >+ void* instancePtr = NULL;
> >+ HRESULT rv = accessible->QueryInterface(IID_IAccessibleText,
> >+ &instancePtr);
> >+ if (SUCCEEDED(rv)) {
> >+ NS_IF_RELEASE(gTextEvent);
> >+ NS_IF_ADDREF(gTextEvent = downcast_accEvent(aEvent);
> >
> >- (static_cast<IUnknown*>(instancePtr))->Release();
> >- }
> >- }
> >+ (static_cast<IUnknown*>(instancePtr))->Release();
>
> I don't think there's any need for that static cast, you should be able to
> call Release() on a AccEvent*
>
I did not change anything here, so I should just call instancePtr->Realease()?
Assignee | ||
Comment 15•13 years ago
|
||
I may misunderstand some comments. Just create a new patch to make it better.
Attachment #614278 -
Attachment is obsolete: true
Attachment #615163 -
Flags: review?(trev.saunders)
Comment 16•13 years ago
|
||
Comment on attachment 615163 [details] [diff] [review]
patch v6
> for (; idx < length; ++idx) {
>- nsCOMPtr<nsIWinAccessNode> winAccessNode =
>- do_QueryElementAt(aGeckoArray, idx, &rv);
>- if (NS_FAILED(rv))
>- break;
>+ nsRefPtr<nsAccessible> acc = do_QueryFoo();
sorry if I was unclear, I didn't mean do_QueryFoo() to be taken literally.
>+ HRESULT rv = (static_cast<nsAccessibleWrap*>(acc))->QueryInterface();
>+ void *instancePtr = NULL;
you might want to pass arguments to QueryInteface(), and declare the variables you'll pass first...
Attachment #615163 -
Flags: review?(trev.saunders)
Comment 17•13 years ago
|
||
(In reply to Ye Kaiqi from comment #14)
> (In reply to Trevor Saunders (:tbsaunde) from comment #13)
> > Comment on attachment 614278 [details] [diff] [review]
> > patch v5
> >
> > >+ static_cast<nsAccessibleWrap*>(aEvent->GetAccessible());
> > >+ if(accessible) {
> > >+ void* instancePtr = NULL;
> > >+ HRESULT rv = accessible->QueryInterface(IID_IAccessibleText,
> > >+ &instancePtr);
> > >+ if (SUCCEEDED(rv)) {
> > >+ NS_IF_RELEASE(gTextEvent);
> > >+ NS_IF_ADDREF(gTextEvent = downcast_accEvent(aEvent);
> > >
> > >- (static_cast<IUnknown*>(instancePtr))->Release();
> > >- }
> > >- }
> > >+ (static_cast<IUnknown*>(instancePtr))->Release();
> >
> > I don't think there's any need for that static cast, you should be able to
> > call Release() on a AccEvent*
> >
> I did not change anything here, so I should just call
> instancePtr->Realease()?
actually, I read it wrong, actually don't change that line.
Updated•12 years ago
|
Assignee: nobody → nickyekaiqi
Status: NEW → ASSIGNED
Reporter | ||
Comment 18•12 years ago
|
||
was fixed by bug 648267
Status: ASSIGNED → RESOLVED
Closed: 12 years ago
Resolution: --- → FIXED
You need to log in
before you can comment on or make changes to this bug.
Description
•