[Bug] MS IE example (COM)

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

[Bug] MS IE example (COM)

Dennis Schetinin
Hi again! :)

Still having 'fun' with Internet Explorer I've met another issue. Consider the following script:

browser := MSIEEventTraceViewer open browserController.
browser navigateTo: 'http://www.digitalglobe.com/archive'.

"wait for page being downloaded here"

doc := browser dispatchDriver getProperty: 'Document'.
something := ( doc getMethod: 'frames' ) getProperty: 'item' withArguments: #( 0 0 ).
something printString.

The last line leads to image crash. And I can't even debug it! All method invokations I've tried through something fail.
But

( doc getMethod: 'frames' ) getProperty: 'length'


gives a correct result.

I use vw 7.4 nc. Checked it in vw 7.3.1 and got the same problem.

Btw, the similar script in Dolpin works.

Unfortunatly, this can stop me using VisualWorks for the work I'm doing (but I don't want to), so please help!!!
Or send any answer at all, just to let me feel myself not so lonely :)

--
Dennis Schetinin
Reply | Threaded
Open this post in threaded view
|

RE: [Bug] MS IE example (COM)

Steven Kelly

Poor Dennis, nobody else seems to have been brave enough to try what you’re doing :-(.

 

The only help I can offer is how to debug VM crashes – if that’s what you mean by an image crash. In bin\win\readme.txt, it says to look at this URL:

http://wiki.cs.uiuc.edu/VisualWorks/debugging+at+the+virtual+machine+level

There’s also a VM command-line argument, -o10s, which outputs all method calls to stdout (if you start with the debug vwntconsole.exe), but that’s maybe more useful for crashes at startup. [just added that info to the above URL].

 

Steve

 

-----Original Message-----
From: Dennis Schetinin [mailto:[hidden email]]
Sent: 16 May 2006 16:30
To: vwnc-list
Subject: [Bug] MS IE example (COM)

 

Hi again! :)

Still having 'fun' with Internet Explorer I've met another issue. Consider the following script:

browser := MSIEEventTraceViewer open browserController.
browser navigateTo: 'http://www.digitalglobe.com/archive'.

"wait for page being downloaded here"

doc := browser dispatchDriver getProperty: 'Document'.
something := ( doc getMethod: 'frames' ) getProperty: 'item' withArguments: #( 0 0 ).
something printString.


The last line leads to image crash. And I can't even debug it! All method invokations I've tried through something fail.
But


( doc getMethod: 'frames' ) getProperty: 'length'


gives a correct result.

I use vw 7.4 nc. Checked it in vw 7.3.1 and got the same problem.

Btw, the similar script in Dolpin works.

Unfortunatly, this can stop me using VisualWorks for the work I'm doing (but I don't want to), so
please help!!!
Or send any answer at all, just to let me feel myself not so lonely :)

--
Dennis Schetinin

Reply | Threaded
Open this post in threaded view
|

RE: [Bug] MS IE example (COM)

Thomas Brodt
In reply to this post by Dennis Schetinin
Hi Dennis,

it won't be a real help, but I also sometimes have difficulties with the
dispatchDrivers for the Item properties (in Excel for me, not IE). They seem
so easy in VBA, but somehow they aren't when calling from outside the MS
world. Is the dispatchDriver for the item property a valid one (connected?).
Is there another way to get to the property? I don't know the IE Object
Model. Just fishing in the dark, you know. I can get a dispatchDriver for
the Document (DispHTMLDocument), but not even for the frames method (member
not found), neither the item within it.

Thomas

> -----Original Message-----
> From: Dennis Schetinin [mailto:[hidden email]]
> Sent: Tuesday, May 16, 2006 3:30 PM
> To: vwnc-list
> Subject: [Bug] MS IE example (COM)
>
> Hi again! :)
>
> Still having 'fun' with Internet Explorer I've met another
> issue. Consider the following script:
>
>
> browser := MSIEEventTraceViewer open browserController.
> browser navigateTo: 'http://www.digitalglobe.com/archive'.
>
> "wait for page being downloaded here"
>
> doc := browser dispatchDriver getProperty: 'Document'.
> something := ( doc getMethod: 'frames' ) getProperty: 'item'
> withArguments: #( 0 0 ).
> something printString.
>
>
> The last line leads to image crash. And I can't even debug
> it! All method invokations I've tried through something fail.
> But
>
>
> ( doc getMethod: 'frames' ) getProperty: 'length'
>
>
> gives a correct result.
>
> I use vw 7.4 nc. Checked it in vw 7.3.1 and got the same problem.
>
> Btw, the similar script in Dolpin works.
>
> Unfortunatly, this can stop me using VisualWorks for the work
> I'm doing (but I don't want to), so please help!!!
> Or send any answer at all, just to let me feel myself not so lonely :)
>
> --
> Dennis Schetinin
>

Reply | Threaded
Open this post in threaded view
|

RE: [Bug] MS IE example (COM)

Alexander Augustin
In reply to this post by Dennis Schetinin

Hello,

 

I tried to find a way around the #item method of the frames collection which may return some strange
Dispatch Objects that do not like retrieving their ITypeInfo interface and this way
seem to cause the trouble. For me the following code snippet seems to work:

 

| browser doc frames frame |

browser := MSIEEventTraceViewer open browserController.

browser navigateTo: 'http://www.digitalglobe.com/archive'.

 

"wait for page being downloaded here"

 

doc := browser dispatchDriver getProperty: 'Document'.

frames := doc getMethod: 'frames'.

numFrames := frames getMethod: 'length'.

0 to: numFrames-1 do: [:index |

      frame := doc getMethod: 'frames' with: index.

      [ frame invokeMethod: 'navigate' with: 'http://www.google.de'. ]

ensure: [ frame release]].

frames release.

doc release.

 

Further I placed a workaround in MSIEEventTraceViewer>>navigateCompleted:to: as I got COM stacktraces
when executing the example which are not useful at this position.

Inside the method, please replace …

            (self describeDispInterface: frameDispatchInterface)

with:

            ([ self describeDispInterface: frameDispatchInterface ]

on: Error

do: [:ex | ex return: 'SomeInterface - error describing interface']).

 

It does not remove the reason for the error, but it avoids popping up windows with COM stack traces.

I assume, as the callback implementation works for parameters representing entire browser windows,
the problem is caused by parameter which represent only frames.

 

I am not sure why these “frame” interfaces should disallow retrieving their describing ITypeInfo (I could not find
anything during a short google search session or in the MSDN) but that is what seems to happen.  

 

However there might be different reasons for the problem, e.g. a wrong assumption somewhere deep

inside COM Connect or a non-standard implementation inside the used COM Server.

Finding the real reason will require some more investigation.

 

Best regards,
Alexander Augustin

 


Von: Dennis Schetinin [mailto:[hidden email]]
Gesendet: Dienstag, 16. Mai 2006 15:30
An: vwnc-list
Betreff: [Bug] MS IE example (COM)

 

Hi again! :)

Still having 'fun' with Internet Explorer I've met another issue. Consider the following script:

browser := MSIEEventTraceViewer open browserController.
browser navigateTo: 'http://www.digitalglobe.com/archive'.

"wait for page being downloaded here"

doc := browser dispatchDriver getProperty: 'Document'.
something := ( doc getMethod: 'frames' ) getProperty: 'item' withArguments: #( 0 0 ).
something printString.


The last line leads to image crash. And I can't even debug it! All method invokations I've tried through something fail.
But


( doc getMethod: 'frames' ) getProperty: 'length'


gives a correct result.

I use vw 7.4 nc. Checked it in vw 7.3.1 and got the same problem.

Btw, the similar script in Dolpin works.

Unfortunatly, this can stop me using VisualWorks for the work I'm doing (but I don't want to), so
please help!!!
Or send any answer at all, just to let me feel myself not so lonely :)

--
Dennis Schetinin