long-term: isolate browser-specific api
this fixes #225, and comply with chromium dev's advice on how to use setIcon()