Giter Site home page Giter Site logo

sailfishos / sailfish-browser Goto Github PK

View Code? Open in Web Editor NEW
300.0 50.0 85.0 5.94 MB

Sailfish Browser

Home Page: https://github.com/sailfishos/sailfish-browser/wiki/Sailfish-Browser-wiki

License: Mozilla Public License 2.0

Shell 0.58% QML 29.55% C++ 54.71% QMake 2.69% JavaScript 0.27% CSS 0.15% HTML 11.98% C 0.07%

sailfish-browser's Introduction

sailfish-browser

Sailfish Browser is web browser for Sailfish OS and is shipping with Sailfish OS devices. Sailfish Browser uses Sailfish Silica Qt components for the browser chrome and gecko engine with embedlite Qt5 binding. More information about the architecture can be found from https://web.archive.org/web/20180830103541/http://blog.idempotent.info/posts/whats-behind-sailfish-browser.html . Feel free to ask questions on Forum from Maintainers.

Maintainers

  • Raine Mäkeläinen (rainemak)
  • David Llewellyn-Jones (llewelld)

Engine and adaptation

Tools

All tools are located in source tree under tools.

Memory dump reader is a simple desktop utility for dumping and collecting memory information of the Sailfish Browser. Current version of the memory-dump-reader is a work-in-progress version.

Compilation
  • Change directory to the tools/memory-dump-reader
  • <qmake-bin-path>/qmake
  • make
Reading and collecting

Once memory-dump-reader is compiled, run it like: dumpMemoryInfo /tmp/fileName.gz ip-of-the-device. The script dumps remotely memory information of the browser and copies the dump to the desktop. The dumpMemoryInfo script works best when you have added your public ssh key as an authorized key of the device.

License

The browser is open source and licensed under Mozilla Public License v2.0 (http://www.mozilla.org/MPL/2.0/).

Wiki

For more information see wiki: https://github.com/sailfishos/sailfish-browser/wiki/Sailfish-Browser-wiki

sailfish-browser's People

Contributors

abranson avatar adenexter avatar atatarov avatar azerninomp avatar blammit avatar chriadam avatar d-grigorev avatar jpetrell avatar jusa avatar kananoja avatar laakkonenjussi avatar llewelld avatar martinjones avatar mikkoharju avatar mkenttala avatar mlehtima avatar notkit avatar okodron avatar paveltkv avatar pvuorela avatar rainemak avatar rburchell avatar rojkov avatar salmelamike avatar siteshwar avatar spiiroin avatar tmeshkova avatar tomin1 avatar tworaz avatar veskuh avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

sailfish-browser's Issues

Crash at startup

Browser crashes at startup if button to show tabs is clicked before page load starts.

Steps to reproduce :

  1. Launch browser.
  2. Click on the button to show tabs before page load starts.

How reproducible:
Always

Browser scrolls away when changing orientation

It would appear the browser counts the "distance scrolled" in screen heights and then converts to pixels or similar. Thus, when height and width is swapped.. you only get 9/16 as far down the page (or the opposite way, when you change to portrait). So after a few screen heights of reading you wont see anything of what you were looking at if you change the orientation.

Delete incorrect instance from list of history suggestions

If i have typed an incorrect URL previously, say, googel.com, currently there is no way to stop it from being suggested. And as it happens, i keep clicking the wrong suggestion. 😉

Can we have the option to delete such individual entries? Perhaps, by having an option called Delete on holding the entry.

Adding custom / Cacert certificates not possible

I tried to add the Cacert root-Certificate to the Browser and it doesn't work as expected.

When I click on the .pem certificate at cacert (http://www.cacert.org/index.php?id=3), the Browser opens up a page where I could add it. But none of the options nor the button are clickable. I've added a screenshot below.

Now I have added the certificate manually with this solution: https://together.jolla.com/question/835/browser-personal-certificates-import/?answer=8170#post-id-8170
screenshot_browser_cacert

Greetings

Slow startup on Uitukka

Some users are reporting slow startup on Uitukka. This is probably because of system running low on memory. Still worth investigating if something could be done for startup and for Tweetian's own memory use.

JavaScript-heavy (asm.js) WebGL page crashes browser

Steps to reproduce:

Expected result:

  • Page loads and works, content is rendered via WebGL and has acceptable performance

Actual result:

  • Browser locks up, then crashes

Other comments:

  • The page works on Nexus 4 in Android (tested using Chrome 34 and Firefox 29)
  • The page doesn't work on Firefox 29 running in Alien on Jolla (also crashes)
  • The same code, running natively, works on SFOS on Jolla, so all the GL features it uses (FBOs with depth buffer, ...) should be supported by the GL driver

Automatically scroll to selected menu item when accessing a dropdown menu

I'll elaborate on that with a simple scenario:

  • Surf to a webpage that has a form with a SELECT element and plenty of OPTION elements (in plain English: a dropdown menu) on it.
  • Select one of the options and submit the form so that afterwards you can see the chosen element as selected instead of the default option (this is, of course, assuming that you will remain on a page where the dropdown menu is stil visible after submitting the form)
  • Access the dropdown menu again by tapping on it

End result:

  • Dropdown menu opens up at the topmost item in the menu instead of the selected one. The selected item is highlighted when scrolling the menu but not necessarily visible when accessing the menu. IMO it would be quite logical to open up the dropdown menu at the point where the selected item is on the list (this is how e.g. Firefox handles selected items in a dropdown menu).

MP4 playback bugged

Had a look at my own blog with my jolla today and a video on there was a bit screwed up, sound is working though.

20140318121132

https://schaepers.it/ubuntu-touch-on-nexus-7/

$~ mediainfo ubuntu_touch_nexus7.mp4
General
Complete name                            : ubuntu_touch_nexus7.mp4
Format                                   : MPEG-4
Format profile                           : Base Media
Codec ID                                 : isom
File size                                : 15.5 MiB
Duration                                 : 4mn 20s
Overall bit rate mode                    : Variable
Overall bit rate                         : 499 Kbps
Writing application                      : Lavf55.19.104

Video
ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Format profile                           : [email protected]
Format settings, CABAC                   : Yes
Format settings, ReFrames                : 4 frames
Codec ID                                 : avc1
Codec ID/Info                            : Advanced Video Coding
Duration                                 : 4mn 20s
Bit rate                                 : 350 Kbps
Width                                    : 1 138 pixels
Height                                   : 640 pixels
Display aspect ratio                     : 16:9
Frame rate mode                          : Variable
Frame rate                               : 29.750 fps
Minimum frame rate                       : 25.000 fps
Maximum frame rate                       : 29.751 fps
Color space                              : YUV
Chroma subsampling                       : 4:2:0
Bit depth                                : 8 bits
Scan type                                : Progressive
Bits/(Pixel*Frame)                       : 0.016
Stream size                              : 10.9 MiB (70%)
Writing library                          : x264 core 135
Encoding settings                        : cabac=1 / ref=3 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=7 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=1 / me_range=16 / chroma_me=1 / trellis=1 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=-2 / threads=12 / lookahead_threads=2 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=2 / keyint=250 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc_lookahead=40 / rc=crf / mbtree=1 / crf=23.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=1:1.00

Audio
ID                                       : 2
Format                                   : MPEG Audio
Format version                           : Version 1
Format profile                           : Layer 3
Mode                                     : Joint stereo
Codec ID                                 : 6B
Duration                                 : 4mn 20s
Bit rate mode                            : Variable
Bit rate                                 : 142 Kbps
Channel(s)                               : 2 channels
Sampling rate                            : 48.0 KHz
Compression mode                         : Lossy
Stream size                              : 4.41 MiB (28%)
Writing library                          : LAME3.99.5

File download confirmation and download information

As a user, when I tap on a download link, before the download link starts, I want to know (in descending order of priority):

  • The size of the file
  • The basename of the file that is being downloaded
  • The file type (e.g. apk, zip, ...) that is being downloaded
  • From which server (hostname) the file is being downloaded

Based on this information, I then want to confirm (e.g. through a Sailfish-style dialog) whether to download the file or not.

This is especially important if I'm on a metered connection. Right now, there's only a remorse item, and that doesn't seem to work correctly (the download of small files finishes before the remorse timer is done).

Remove oldest browsing history entries from database

Oldest entries should be periodically cleaned from browser's history database. Either keep only X amount of latest entries or timestamp entries and remove entries older than X days.

2-3months time should be enough, while it can still be a lot.

As history database queries are executed in another thread, clean-up could be for instance done when browser is started.

"Find in page" feature

This is a feature suggestion for a find-in-page feature, searching for a particular string in the body of a page. This feature is a staple in all modern web browsers, both for mobile and desktop devices, and seems like a crucial feature for the Sailfish browser.

about:config and about:addons

about:config because personally I think it's easier than messing around with user.js, having to know what lines need to be added (which I don't).
For example: I tried to enable private browsing by using the line:
user_pref("browser.privatebrowsing.autostart", true);
Which does not work.

about:addons to install and manage addons.

[sailfish-browser] Browser crashes when .mp3 link is clicked

Steps to reproduce :

  1. Go to http://jolla.com/press.
  2. Click on 'MP3' link under 'Jolla Ringtone' section.

How Reproducible :
Always

Packages :

embedlite-components-qt5-1.7.9-1.armv7hl
sailfish-browser-1.0.7-1.armv7hl
sailfish-browser-settings-1.0.7-1.armv7hl
xulrunner-qt5-31.0-1.armv7hl
xulrunner-qt5-misc-31.0-1.armv7hl

Backtrace :

#0  0xb6175440 in raise () from /lib/libpthread.so.0
#1  0xb1a3079c in nsProfileLock::FatalSignalHandler (signo=11, info=0xaccfded0, context=0xaccfdf50) at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/profile/dirserviceprovider/src/nsProfileLock.cpp:175
#2  0xb20a20f0 in AsmJSFaultHandler (signum=11, info=0xaccfded0, context=0xaccfdf50) at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/js/src/jit/AsmJSSignalHandlers.cpp:966
#3  <signal handler called>
#4  0x93f5b528 in gst_pad_set_element_private () from /usr/lib/libgstreamer-0.10.so.0
#5  0xb15672f0 in mozilla::GStreamerReader::InstallPadCallbacks (this=0x9eef6400) at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/content/media/gstreamer/GStreamerReader-0.10.cpp:194
#6  0xb156478c in Init (this=0x9eef6400, aCloneDonor=<optimized out>) at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/content/media/gstreamer/GStreamerReader.cpp:221
#7  mozilla::GStreamerReader::Init (this=0x9eef6400, aCloneDonor=<optimized out>) at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/content/media/gstreamer/GStreamerReader.cpp:172
#8  0xb1518464 in mozilla::MediaDecoderStateMachine::Init (this=0x99fd0ca0, aCloneDonor=<optimized out>) at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/content/media/MediaDecoderStateMachine.cpp:1043
#9  0xb1513d5c in mozilla::MediaDecoder::InitializeStateMachine (this=0x94ee5300, aCloneDonor=<optimized out>) at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/content/media/MediaDecoder.cpp:550
#10 0xb14b9944 in mozilla::dom::HTMLMediaElement::FinishDecoderSetup (this=0x9ae6d4f0, aDecoder=0x94ee5300, aStream=<optimized out>, aListener=0xa24eb9ec, aCloneDonor=0x0)
    at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/content/html/content/src/HTMLMediaElement.cpp:2622
#11 0xb14b9b3c in mozilla::dom::HTMLMediaElement::InitializeDecoderForChannel (this=0x9ae6d4f0, aChannel=0x94ef8430, aListener=0xa24eb9ec)
    at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/content/html/content/src/HTMLMediaElement.cpp:2577
#12 0xb14bb5f0 in mozilla::dom::HTMLMediaElement::LoadWithChannel (this=0x9ae6d4f0, aChannel=0x94ef8430, aListener=0xa24eb9ec) at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/content/html/content/src/HTMLMediaElement.cpp:1236
#13 0xb14f4de8 in mozilla::dom::VideoDocument::CreateSyntheticVideoDocument (this=0x9aef8000, aChannel=0x94ef8430, aListener=0xa24eb9ec)
    at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/content/html/document/src/VideoDocument.cpp:110
#14 0xb14f5138 in mozilla::dom::VideoDocument::StartDocumentLoad (this=0x9aef8000, aCommand=<optimized out>, aChannel=0x94ef8430, aLoadGroup=<optimized out>, aContainer=0xa9ebfcac, aDocListener=0xa9e130b0, aReset=true, aSink=0x0)
    at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/content/html/document/src/VideoDocument.cpp:59
#15 0xb113a3f0 in nsContentDLF::CreateDocument (this=<optimized out>, aCommand=0xb21f5faf "view", aChannel=0x94ef8430, aLoadGroup=0xaa02bc10, aContainer=0xa9ebfcac, aDocumentCID=..., aDocListener=0xa9e130b0, aContentViewer=0xaccfe738)
    at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/layout/build/nsContentDLF.cpp:405
#16 0xb113a9e4 in nsContentDLF::CreateInstance (this=0xa9e70508, aCommand=0xb21f5faf "view", aChannel=0x94ef8430, aLoadGroup=0xaa02bc10, aContentType=0x94dc9288 "audio/mpeg", aContainer=0xa9ebfcac, aExtraInfo=0x0, 
    aDocListener=0xa9e130b0, aDocViewer=0xaccfe738) at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/layout/build/nsContentDLF.cpp:259
#17 0xb1971d5c in nsDocShell::NewContentViewerObj (this=0xa9ebfc00, aContentType=0x94dc9288 "audio/mpeg", request=<optimized out>, aLoadGroup=<optimized out>, aContentHandler=0xa9e130b0, aViewer=0xaccfe738)
    at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/docshell/base/nsDocShell.cpp:8431
#18 0xb1986eec in nsDocShell::CreateContentViewer (this=0xa9ebfc00, aContentType=0x94dc9288 "audio/mpeg", request=0x94ef8430, aContentHandler=0xa9e130b0)
    at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/docshell/base/nsDocShell.cpp:8231
#19 0xb198a9cc in DoContent (aAbortProcess=0xb0cc49e4 <nsDocumentOpenInfo::TryContentListener(nsIURIContentListener*, nsIChannel*)+556>, aContentHandler=0xaccfe817, request=0x94ef8430, aIsContentPreferred=true, 
    aContentType=0x94dc9288 "audio/mpeg", this=0xa9e92920) at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/docshell/base/nsDSURIContentListener.cpp:122
#20 nsDSURIContentListener::DoContent (this=0xa9e92920, aContentType=0x94dc9288 "audio/mpeg", aIsContentPreferred=<optimized out>, request=0x94ef8430, aContentHandler=0xa9e130b0, aAbortProcess=0xaccfe817)
    at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/docshell/base/nsDSURIContentListener.cpp:87
#21 0xb0cc49e4 in nsDocumentOpenInfo::TryContentListener (this=0xa9e130a0, aListener=0xa9e92920, aChannel=0x94ef8430) at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/uriloader/base/nsURILoader.cpp:714
#22 0xb0cc4b88 in nsDocumentOpenInfo::DispatchContent (this=0xa9e130a0, request=0x94ef8430, aCtxt=<optimized out>) at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/uriloader/base/nsURILoader.cpp:386
#23 0xb0cc52a0 in nsDocumentOpenInfo::OnStartRequest (this=0xa9e130a0, request=0x94ef8430, aCtxt=0x0) at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/uriloader/base/nsURILoader.cpp:262
#24 0xb0980a64 in mozilla::net::nsHttpChannel::CallOnStartRequest (this=0x94ef8400) at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/netwerk/protocol/http/nsHttpChannel.cpp:920
#25 0xb0980f84 in ContinueProcessNormal (this=0x94ef8400, rv=<optimized out>) at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/netwerk/protocol/http/nsHttpChannel.cpp:1510
#26 mozilla::net::nsHttpChannel::ContinueProcessNormal (this=0x94ef8400, rv=<optimized out>) at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/netwerk/protocol/http/nsHttpChannel.cpp:1449
#27 0xb0981920 in mozilla::net::nsHttpChannel::ProcessNormal (this=0x94ef8400) at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/netwerk/protocol/http/nsHttpChannel.cpp:1445
#28 0xb0983ae8 in mozilla::net::nsHttpChannel::ProcessResponse (this=0x94ef8400) at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/netwerk/protocol/http/nsHttpChannel.cpp:1357
#29 0xb08c3398 in nsInputStreamPump::OnStateStart (this=0xa9e0bbe0) at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/netwerk/base/src/nsInputStreamPump.cpp:517
#30 0xb08c3870 in nsInputStreamPump::OnInputStreamReady (this=0xa9e0bbe0, stream=<optimized out>) at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/netwerk/base/src/nsInputStreamPump.cpp:431
#31 0xb085d690 in nsInputStreamReadyEvent::Run (this=<optimized out>) at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/xpcom/io/nsStreamUtils.cpp:85
#32 0xb086b6b0 in ProcessNextEvent (result=0xaccfeb47, mayWait=<optimized out>, this=0xae9df4a0) at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/xpcom/threads/nsThread.cpp:715
#33 nsThread::ProcessNextEvent (this=0xae9df4a0, mayWait=<optimized out>, result=0xaccfeb47) at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/xpcom/threads/nsThread.cpp:639
#34 0xb081f37c in NS_ProcessPendingEvents (thread=0xae9df4a0, timeout=20) at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/xpcom/glue/nsThreadUtils.cpp:210
#35 0xb11247d8 in nsBaseAppShell::NativeEventCallback (this=0xa6ecb6f8) at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/widget/xpwidgets/nsBaseAppShell.cpp:98
#36 0xb1119580 in nsAppShell::event (this=<optimized out>, e=<optimized out>) at /parentroot/mnt/storage/rpmbuild/BUILD/xulrunner-qt5/widget/qt/nsAppShell.cpp:86
#37 0xb635cfcc in QCoreApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
#38 0xb635d024 in QCoreApplication::notify(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
#39 0xb635ccb8 in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib/libQt5Core.so.5
#40 0xb635f838 in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/libQt5Core.so.5
#41 0xace4bab0 in ?? ()
#42 0xace4bab0 in ?? ()

Jolla browser should allow share URL to BT

I don't know if this is TransferEngine related or Browser related but...It would be good if possible to push URL:s over bluetooth. Right now its only possible send links per mail or twitter.

There should be a download option in the "popupmenu"

There was some buzz today about no option to download Jolla's latest ringtone.

I think there should be an option to download media/files/images in the popup menu (eg the menu shown when tap and hold on a link)

NewWebView: Declare properties in C++ side

All declared properties that are currently declared in QML side of WebView / TabModel should be declared in C++ side.

This will help merging of TabModel & DeclarativeTabModel (#47). For MozView this could mean that we could expose DeclarativeWebPage and create instances through WebView. Conceptually MozView is quite close to a page that can be navigated back and forth.

Once good thing about this would be that we would not need to uglyish meta calls from C++ side to QML. Currently we have some but those should not be there.

Unable to change homepage

Currently its not possible to change the homepage of the browser with the preference "browser.startup.homepage" which works on Firefox.

Apparently jolla.com is hardcoded to be the homepage. It'd be nice if we would be able to set the homepage to something else.

Investigate possibilities to write error pages in QML

We should investigate possibilities to implement error pages in QML. The main benefit would be that we could easily translate them and they would match to platform look end feel.

Data needed at client side (sailfish-browser) varies per error page but good starting point would be "Server not found" as you see it when you type url incorrectly.

See also:
https://github.com/tmeshkova/embedlite-components/blob/master/overrides/netError.xhtml
https://github.com/tmeshkova/embedlite-components/blob/master/overrides/netError.css

Improved url support + 3rd party support

Be able to open an application when clicking on an url. Right now, http(s):// mailto:// and tel:// are supported, but maybe we should have extended support, like clicking on a http://twitter.com/ opens Android Twitter / Tweetian.

This need 3rd party support to be able to handle this too.

[sailfish-browser] First page load after starting the Browser takes a while

Don't know how else to describe it, but the steps to reproduce it pretty consistently:
(using mobile-data)

  1. Open any web site with the browser.
  2. Close the browser.
  3. Open the Browser and observe the loading of the previously opened page. (or: open any link from another app.)
  4. Observe the "loading" status bar, it is frozen at some position for a very long time (like 10-30 seconds)

Sometimes a reload helps, but most of the time I just need to wait for the problem to timeout or something.

Enable more webRTC features

Would it be possible to enable support for a couple more webRTC features in the sailfish browser?

Here's an online check for the features I'd love to see: http://iswebrtcready.appear.in/

This webpage reports that the following are missing on the sailfish-browser that comes with Jolla version 1.0.5.16:

  • getUserMedia() (Web camera access)
  • RTCPeerConnection (Peer to Peer connection)
  • ICE Connection (NAT traversal)

Thanks! :)

Private browsing support

Enable private browsing support.

As we have a history that is at browser side we cannot write to the history when private browsing is enabled.

Preference:
"browser.privatebrowsing.autostart"

Some pointers to Gecko:

[suggestion] Separating sailfish-browser from SailfishOS

I have to wait every OS update to get the latest version of the browser. Android had this problem for many years (Android 2.x). The sailfish-browser should just like Google chrome be separated from the OS to ship updates faster.

Option to reset browser to default state

Since users are manually installing add-ons to the browser and changing settings due to no official support for such things, we need to have a way to reset the browser to its default state like Firefox has, if you want to get rid of add-ons/leftovers etc or if problems arise.

Or if this is already possible to do manually some instructions for this would be great.

Use Button instead of MenuItem in BrowserContextMenu

Using MenuItem seems inappropriate in BrowserContextMenu since it is not a good sign that those items are clickable and lack of (noticeable) visual feedback when those items are pressed. Buttons will be a better choice. Using buttons instead of MenuItem can also remove some confusing codes like highlightItem() and setHighlightItem() functions.

The guideline in here also state that Theme.highlightColor should be use for label that is non-interactive (which is the default color of MenuItem).

Just my suggestion, let me know what you think :)

Comparsion of MenuItems and Buttons:
screenshot from 2014-02-16 00 57 57 resized
screenshot from 2014-02-16 00 55 36 resized

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.