Opera Mini – pierwsza przeglądarka na WinPhone nieoparta na silniku IE
Microsoft uznał, że w Windows Phone Makretplace nie będzie przeglądarek nie korzystających z systemowego silnika IE - po pierwsze bezpieczeństwo (przeglądarka to w końcu parser niebezpiecznego internetu, mogą być w niej dziury narażające użytkownika i jego prywatność - np. null na początku JavaScriptu w przeglądarce Androida do wersji 4.4 wyłączało całkowicie ochronę przed XSS - fundament jakiegokolwiek bezpieczeństwa [ źródło]), po drugie - ochrona przed konkurencją. Zresztą - jak można napisać wydajniejszą przeglądarkę od wbudowanej w system, skoro można pisać tylko we frameworku?
Do niedawna wszystko było spokojnie - czyli kilka innych przeglądarek, które albo nie działają w ogóle, albo działają słabo i bardzo niewiele perełek jak UC Browser. Ta ostatnia dokłada nawet niezły interfejs i sporo dodatków - czytnik kodów QR, lepsze zarządzanie zakładkami, obsługa >6 kart (miało to znaczenie przed WinPhone 8 - wtedy IE obsługiwał tylko 6).
Ale pojawiła się Opera. Opera była już kiedyś dostępna na WinPhone 7.0; od 7.1 (czyli rynkowo “7.5”) wycięto możliwość odpalania natywnych binarek więc przeniesiona jeszcze z czasów Windows Mobile 6.5 wersja nie uruchamiała się. (Gwoli ścisłości: na WinPhone 8 da się taka wersję odpalić, ale potrzebny jest Interop Unlock, co do tej pory udaje się tylko na Samsungach ATIV).
Aplikacja dostępna od kilku tygodni w Marketplace po okresie zamkniętych testów budziła na początku zmienne uczucia. Dlaczego zmienne? Bo co kilkanaście godzin wychodziły aktualizacje w “trybie wersji Windows” - czyli co druga działała. Te niedziałające crashowały się po kilku sekundach. Jak jednak udało się uruchomić to zobaczyliśmy starą, dobrą Operę. Z niezmienionym wyglądem. Działającą dokładnie jak kilka lat temu.
Kilka wątpliwości na start- złamano chyba wszelkie reguły aplikacji w Marketplace. Pominę kwestię, że ta przeglądarka wykorzystuje własny silnik renderowania w świetle zgodności tego z założeniami MS. Po pierwsze: aplikacja, która crashuje się podczas startu na kilku różnych telefonach w różnym stanie (w tym “czystych”) w ekosystemie WinPhone nie ma prawa istnieć. Podczas certyfikacji, czyli procesu dopuszczania aplikacji do umieszczenia w publicznym sklepie działanie sprawdza automat na maszynach wirtualnych i wadliwe paczki odrzuca; następnie robi to także żywy człowiek na 3-4 losowych telefonach fizycznych (w tym przynajmniej jednym z niższej półki). Dlatego proces trwa 3-5 dni roboczych. Nie ma szans, żeby przeoczono fakt, że “się nie uruchamia” zgłaszany przez rzesze użytkowników.
Po drugie - interfejs graficzny jest “niezgodny” z wytycznymi Modern UI. “Niekwadratowy” (nie chodzi rzecz jasna tylko o to) wygląd teoretycznie dozwolony jest tylko w przypadku gier. Ten interfejs sugeruje, że nie powstał on w standardowych “formsach” frameworka. Są dwie opcje: albo skorzystano z MSowego frameworka do ręcznego tworzenia UI do WinPhone, albo zostawiono to co było w poprzednich wersjach, czyli aplikacja posiada własny kod renderujący kontrolki. To drugie jest niebezpiecznie prawdopodobne.
To wszystko podsuwa wątpliwości, że aplikacja została w jakiś brutalny sposób przeportowana żywcem z archaicznej kompilacji na Windows Mobile. To nie jest dobry sygnał dla m.in. wydajności i bezpieczeństwa (hipotetycznie jeżeli Opera ma udzielony dostęp do API systemu, żeby działała poza frameworkiem to może to być zagrożenie - ale to tylko gdybanie).
Polem do analizy byłoby zapisanie strony WWW (stara funkcja Opery jeszcze z czasów JavaMobile, która zapisuje je w katalogu programu, nie zaś w przestrzeni użytkownika) i wyciągnięcie z karty SD zaszyfrowanego pliku zrzutu. Teoretycznie dałoby to możliwość złamania klucza urządzenia, co za tym idzie sprawdzenia kodu (C# .Net jest w pełni dekompilowalny - czasem nawet z komentarzami). Ale znowu - to tylko teoria.
Pewna jest tylko
\WPSYSTEM\APPS\{B3BF000A-E004-4ECB-A8FB-9FC817CDAB90}
|
├───TempInstall
│ ├───Installer
│ └───Install
├───TempNI
├───XBF
│ └───pl-PL
│ OperaMini.XbfContainer
│
├───Install
│ │ AppManifest.xaml
│ │ elements.png
│ │ MDILFileList.xml
│ │ OperaMini.dll
│ │ OperaMiniRuntime.dll
│ │ OperaMiniRuntime.winmd
│ │ prereksio.ini
│ │ RPALManifest.xml
│ │ WMAppManifest.xml
│ │ WMAppPRHeader.xml
│ │
│ ├───Assets
│ │ opera_icon_110x110.png
│ │ opera_icon_202x202.png
│ │
│ └───output
│ ├───build
│ │ a
│ │
│ └───res
│ data-ri-universal.rsc
│ locale-ri-universal.rsc
│ skin-qxga-touch.rsc
│ skin-svga-touch.rsc
│ skin-vga-touch.rsc
│
└───NI
OperaMiniRuntime.ni.dll
OperaMini.ni.dll
Ale przejdźmy do meritum, czyli funkcjonalności. Opera działa. Ma też wszystkie funkcje, które były dla nas zarówno oczywiste jak i niezbędne na skrzypiących telefonach opartych o J2ME, jak chociażby klasyk epoki - Sony Ericcson k800. Są to przede wszystkim: flagowa opcja Opery - oszczędzanie pasma z trybem drastycznym (kompresja obrazków z obniżaniem ich jakości), widok jednokolumnowy (bez którego dawno temu nie dało się w ogóle przeglądać stron innych niż WAP), zawijanie tekstu (super ważne przy rozdzielczościach <= 320x240px) no i karty. Karty, które były fenomenem w dawnych czasach. Jaka jest teraz przydatność tych funkcji? Kompresję pasma oferuje IE11, strony maja już wersje mobilne, systemowa przeglądarka oferuje nieograniczoną liczbę kart. Tylko zawijanie tekstu się przebija bo w IE ta funkcjonalność kuleje.
Strony się ładują. Ale ponieważ to stara Opera (nowe bazują na silniku Blink z Chromium) to strony bywają lekko zdeformowane. Pierwszy mierzalny test jaki przyszedł mi do głowy to ACID3. Kiedyś miał on znaczenie, bo jeszcze kilka lat temu nieoczywistym było, że przeglądarki są zgodne ze standardami. Koło 90/100 to był dobry wynik. IE7 miał 23. (Teraz wszystkie znaczące mają 100/100) A jak wyszła Opera z pojedynku z IE11? 97/100 dla Opery i 100/100 dla IE11. Wynik jak na Operę na telefonie świetny 😉 Teoretycznie znaczy to tyle, że HTML4 i towarzyszące JS i CSS2 opanowane. Ale żeby było śmiesznie - Opera kończy test znacznie szybciej niż IE. Te 3 punkty różnicy nie powinny trwać aż tyle.
- Po napisaniu artykułu sprawdziłem używanego przeze mnie na stacjonarce Google Chrome 37. I wyszło 97/100. [
Strona testu ACID3]
ACID3 na Operze (po lewej) vs. IE11 (po prawej)
No ale mamy czasy HTML5 więc znalazłem
html5test.com. Wyniki dla Opery nie są strasznie tragiczne, IE nie zdaje na maksimum.
HTML5TEST na Operze (to jest WinPhone 8.1 - przeglądarka przedstawia się błędnie) po lewej vs. IE 11
Z ciekawości chciałem sprawdzić jak będzie sprawować się wybitnie nieprzyjazny mobilnym przeglądarką nowy panel OVH.
Na IE11 jest lekko mówiąc słabo (jak się pozoomuje i poprzesuwa to od biedy da się wykonać operacje).
Natomiast na Operze… nie da się zalogować. Przycisk jest nieaktywny.
Uznałem, że warto sprawdzić bardziej typowe strony. Zaufana Trzecia Strona wypadła lepiej, ale nadal dziwnie (screeny z najlepszej wersji, na IE11 wybrany tryb żądania wersji mobilnej).
Zaufana Trzecia Strona na Operze (najlepsze ustawienia) vs. IE11 (żądanie wersji mobilnej).
A wracając do kompletnych porażek przeglądarki z Norwegii - postanowiłem odwiedzić w ramach testów stronę
infinite.pl, która jest typowym przedstawicielem nowych trendów i projektów wykorzystujących bajery z CSS3 i HTML5.Jak widać - Opera nie jest w stanie sensownie renderować HTML5. No ale co się dziwić - w czasach powstawania tego silnika nikt takich stron jeszcze nie pisał.
Infinite.pl na Operze vs. IE11
Żeby nie było - jakieś strony się ładują. I to nawet ich wersje dla PC.
Podsumowując chcę przede wszystkim powiedzieć, że Opera na WinPhone jest i raczej niezależnie od aktualizacji będzie dla mnie połączeniem z przeszłością, ale też ważnym narzędziem. Nie mamy tu żadnych rewolucyjnych funkcji, a wszystkie są właściwe dla dawnych czasów, kiedy to internet na telefonach ograniczał się do GPRS (30-80 kb/s), był drogi (50gr za 100kB to standard), możliwości telefonu znikome, ekraniki małe. Wtedy to rzeczywiście możność zapisania strony do trybu offline, czy zaniżanie jakości obrazków i skupianie się na tekście strony (zawijanie tekstu itp.) były istotne. Dziś - nie powie, że bezużyteczne. Jak skończy się pakiet internetowy, to na tych 16kB/s możemy się poczuć jak na SE k800i gdzie każdy bod się liczył. A czasem trzeba zmusić stronę internetową by tekst był istotą.
Opery nie odinstaluję z mojego WinPhone. Co najwyżej odepnę kafelek.