Work Starts on Metro Firefox - The Birth of the MetroTop App
Written by Mike James   
Monday, 12 March 2012
Until now programmers have been working on two types of app for Windows 8 - Metro/WinRT and Desktop/Win32. Now we have a third type, a cross between the two that can be called MetroTop apps because they mix the two systems.

This new kind of MetroTop app can make use of the Win32 API and the Metro UI as provided by WinRT. It really does sit between the two frameworks. This type of app is needed because it provides the only sensible way to allow a browser to work under WinRT. In other words, Microsoft had to create this hybrid in order for IE10's incarnation as a Metro app to have access to the Win32 API.

Now Mozilla is  starting work on building a Metro version of Firefox and they too have to take the MetroTop approach to the problem.

windows8logo

According to Mozilla developer Brian Bondy in a blog entry :

Unlike Metro applications, Metro style enabled desktop browsers have the ability to run outside of the Metro sandbox. Meaning not only can we build a browser, but we can build a powerful browser which gives an experience equal to that of a classic Desktop browser.

Metro style enabled desktop browsers have access to most Win32 API and the entire new WinRT API.

There is an oddity about the MetroTop mode of operations - it seems to be only permitted to browsers and only to the default browser. Presumably this is a security measure to make sure that the number of apps that can occupy this privileged niche is limited to one, or at least one at a time.

The only Microsoft documentation on the matter states:

Metro style enabled desktop browser. A desktop browser that chooses to participate in the new Metro style experience when the user has expressed preference for the browser to do so. Such a browser can provide HTML5 rendering for webpages and service HTTP / HTTPS requests. By definition, such a browser has full access to Win32 APIs for rendering HTML5, including the ability to use multiple background processes, JIT compiling, and other distinctly browser-related functionality (like background downloading of files). Desktop browsers typically run at medium or low integrity level.

 

firefoxicon

The technical details of what Mozilla plans are also interesting:

We will be using the Windows Runtime C++ Template Library (WRL) which is similar to C++ / ATL.

Mozilla also seems to be considering using C++/CX, which is the most direct way to work with WinRT in that it produces native code and is customized with new commands to make this easy. Rather than adopting XAML, the team plans to use the existing XUL code and render it directly to DirectX, although exactly how to do this still seems to be something to discover.

windows8logo

The whole situation seems remarkably confused, given that Windows 8 is supposed to be a consumer preview. From the developer's point of view, Windows 8 looks more like a work in progress than anything approaching a finished product.

More Information

Developing a Metro style enabled Desktop Browser

Further Reading

Mozilla Plans Metro Firefox For Windows 8

Windows 8's Private API - WOA For Developers

C++ Going Native - Inside C+/CX design

Building and using C++ WinRT components

 

 

espbook

 

Comments




or email your comment to: comments@i-programmer.info

 

To be informed about new articles on I Programmer, subscribe to the RSS feed, follow us on Google+, Twitter, Linkedin or Facebook or sign up for our weekly newsletter.

Banner


AI Propels Python To Top Language on GitHub
30/10/2024

This year's Octoverse Report reveals how AI is expanding on GitHub and that Python has now overtaken JavaScript as the most popular language on GitHub. The use of Jupyter Notebooks has also surged.



Wasmer 5 Adds iOS Support
12/11/2024

The Wasmer team has released Wasmer 5.0. The WebAssembly runtime adds experimental support for more back ends including V8, Wasmi and WAMR. It also now has iOS support, and upgraded compilers includin [ ... ]


More News

 

Last Updated ( Monday, 12 March 2012 )