Skip navigation.

Ambassador

The Royal C++ Embassy

Opera 8.65 Beta for Windows Mobile

, , , , , ,

Recently, we have announced a new beta of our Opera 8 product line. This time, version shows 8.65. So what's cool with this release?

The first cool thing about Opera 8.65 is ActiveX support. You can now play your favorite Youtube clip on your PDA (yes, including Turkish users), or watch Flightlevel350.com videos. Among other new features, I would like to focus on this particular feature.

Kind of a new era in Opera
Opera is strict about web standards. Since we provide full HTML browsing on mobile devices, we follow the same approach on Windows Mobile as well. The difference is that there is no Netscape plugin for Windows Mobile based devices, but there are ActiveX controls. Instead of writing Netscape plugins (adapters, if I may - host ActiveX control inside a Netscape plugin, Opera uses NS4 plugin and Opera still doesn't recognize ActiveX) ourselves - because most probably people won't bother writing required/widely used plugins, we have decided to provide generic ActiveX support. It is limited, however. We allow instantiation of some known classes only and rest of the world is just silently ignored. And, no, Opera won't ask you "if you would like to install Joe's cool ActiveX control?". There are three MAJOR (like, really BIG) issues about it;
1. Well, even if we allow you to download and active the control, it most probably won't be an ARM4 binary, anyway! Most ActiveX controls around are 32-bit (64-bit, may be, if you are lucky) Intel binaries, depending on Windows (2000, XP, 2003) Platform SDK today.
2. We are not IE, so we can't promise full compatibility with Opera
3. Security is important. ActiveX = native code execution. Not everything should be downloaded

I was the original implementer of the OLE container, then it has evolved. Then I have evolved it again, so that it can handle windowless controls as well. I was so close to believe in Darwin, because it evolved even further! Opera 9 will be using a slightly more evolved version. I am not actively working on ActiveX support anymore. I sometimes talk and assist other developers. Anyway, we basically allow:
  • Adobe Flash 7
  • FlashLite 2.1
  • Windows Media Player
  • Nothing else. If you want your cool ActiveX plugin to be allowed, contact Opera

No, I still don't believe in Darwin!

We do support windowless plugins but some plugins are not windowless and we can't help much about it. The only problem with windowless plugins is that it costs more to system. Opera 9, hopefully, will provide a full windowless ActiveX support. Even if ActiveX control doesn't indicate it can windowless activate, we kind of emulate windowed container but at the end (and internally), it works like a windowless control.

Houston, we've got a problem!
On Smartphone, UIDeactivate is an important issue. When a control is UIActivate'd, that means control's window will receive user input (focus). However, you do not have another way to set the focused window without keyboard; you can click somewhere/something on the page on Pocket PC! I forgot the combination, but as far as I remember, pressing 0 key longer than 3 seconds UIDeactivate's control and focus goes to next focusable element on the page. I happen to believe same applies for Pocket PC as well.

Having said that, we had problems with Windows Media Player 10.3 on Windows Mobile 6 (Crossbow) devices. It doesn't respect to IOleInPlaceObject::SetObjectRects and IOleObject::SetExtent. Control gets resized but video content isn't. When you resize the page or change page layout, Windows Media Player is resized but playing video content will stay in its previous position, sometimes garbled. And no, it's not only us. I have written a very simple and short sample with ATL's ActiveX container as well; same results.

Scripting is supported up to some extent. In case you find problems during JavaScript execution, or when the conrol wants to access DOM tree and fails, you are warned. Remember, Opera is not Internet Explorer.

UPDATE:
I would like to remind you not all devices use same type of CPUs and can run everything fast enough. According to my observations, Intel XScale processors (PXA27x family, ARM5T) are way faster than non-XScale equivalents. Also, screen size, other software and hardware chosen by manufacturer may affect performance as well. Another note, I have just heard that you can actually listen some online radios streaming with Flash and audio is excellent. My favorite radio broadcasts with Windows Media Player and it works perfect.

I hope you all enjoy our new browser! More (and better) is coming, just stay tuned! Please provide feedback to http://my.opera.com/community/forums/topic.dml?id=183282

Found an old project!Synchronization doesn't necessarily mean locking

Comments

handlec 20. June 2007, 18:22

Hi how are you?
I am really interested in developing activeX controls for opera mobile. Do you guys provide some documentation about it? Like what classes are supported and so on. If I want to develop a camera activex control for smartphone running wm5 would it be possible? How about Voice transmission from within activex, and so on. I would really like to find out more what is and what is not allowed with regards to activex and opera mobile 8.65. Please e-mail me.

Thank you, Lukasz Koszanski.

ismailp 22. June 2007, 13:33

Hi! Opera acts like a generic ActiveX container. If your control works in Internet Explorer or in another container, then it will certainly work in Opera as well. Therefore, one doesn't need documentation about developing ActiveX controls for Opera. You may, however, need some sort of documentation about scripting interface and basically; you have limited scripting chances with current implementatoin. Hopefully we will extend this in next release.

Basically, you can set and get properties of control but function calls are limited. Some known functions of some known controls are allowed.

To get your control whitelisted, you may need to contact with Windows Mobile product management, Opera. But you should contact to them when your control is complete, running, stable, and in mainstream, then they may ask you to prepare specification and probably some documentation for testing and checking.

As you know the issue; this is a third-party native code we are talking about, which can execute native code and must be reliable; both security and safety (i.e. stability, no crashes) wise. Because when control misbehaves, people will find Opera guilty. This is why they ask too many things.

bashar_tak 27. June 2007, 20:26

it is not fully true that opera supports flash and media player. I did many testings this week on opera 8.65 to have a sound streaming or should playing via media player on wm 2003 and no luck. I also found that the communication between flash and html is not functioning in this version. I could not even control the flash object from HTML like setting "autoplay" parameter for example.

ismailp 28. June 2007, 11:46

(I'm in vacation now, and therefore I can't give correct debugger results)
Hi,
it's fully true that Opera supports *not just Flash and Media Player
but any ActiveX control* (restricting their instantiation aside).
Especially Windows Media Player is a must for us and we support it. If
I recall correctly, unfortunately, Windows Media Player ActiveX object
is not present on Pocket PC 2003. As of Windows Mobile 5.0, Microsoft
included Windows Media Player ActiveX object, which you can
instantiate with Windows Media Player 7 class ID. If there is no
object, we can't instantiate it. Web sites use
{6BF52A52-394A-11d3-B153-00C04F79FAA6} class ID, which is
Windows Media Player 7 Class ID and on Pocket PC 2003. When a container would like to instantiate this class, it returns 0x80040154 "Class not registered". If you would like to see, you can try with ATL's container.


// in your WM_CREATE handler, perhaps
// NB:arguments have broken into parts
// because they don't fit to comment
// area.
case WM_CREATE:
CoInitializeEx(NULL, COINIT_MULTITHREADED);
AtlAxWinInit();
g_hwndContainer = CreateWindow(TEXT("AtlAxWin80"),
TEXT("{6BF52A52-394A-11D3-B153")
TEXT("-00C04F79FAA6}"),
WS_CHILD | WS_VISIBLE |
WS_CLIPCHILDREN |
WS_CLIPSIBLINGS, 0, 0,
200, 200, hWnd, NULL,
g_hInst, NULL);

//ATLASSERT(g_hwndContainer);
if (!g_hwndContainer)
{
DWORD dwErr = GetLastError();
DebugBreak();
}
// rest of stuff


Note: You need to deploy atl80.dll (may be msvcr80.dll as well) to device,
load debug symbols for atl80.DLL, place breakpoint in
CreateNormalizedObject function in atlhost.h (or may be directly to
AtlAxWindowProc in the same file). You can then see return value of
CoCreateInstance there. Also, I didn't test or compile above code, but I expect it to compile and run correctly (well, WM_SIZE and few more other important messages
are not handled, either, but anyways).

If you have tried to mutate a property with a script, then it could
fail (although, I am not sure if it "should" fail, I need to ask this
to my friends or debug - but I'm in vacation :smile: ). As I mention, Opera doesn't provide full scripting on ActiveX objects. Apart from that, we set all param tags specified inside object tag. Object may refuse it, however, and it's out of our control. Again, if I recall correctly, I have once tried to mutate a variable at early days of Opera 9 development and I got it's set (basically, setting a text property and invalidating control, and displaying this text in draw function).

Are you sure Flash for Pocket PC supports autoplay property?
How does it behave in Internet Explorer?

Write a comment

You must be logged in to write a comment. If you're not a registered member, please sign up.

Download Opera, the fastest and most secure browser
December 2009
S M T W T F S
November 2009January 2010
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31