Behind the Scenes of Google Chrome

Some stuff I discovered playing with Google Chrome:

  • View source works on the various “internal” pages (i.e. the home page, the about:stats page, etc) so you can see how the magic happens
  • Read the comments in the home page to see how absolutely nutso over-the-top the programmer was about load time. He obsesses about the difference between 20ms and 100ms. You go, dude… make it fast!
  • Also in the home page, you can see that internal UI pages have access to a Javascript object called “chrome” that tells the page what to put on itself. (Attention bad guys: this is an attack surface. If you can find a way to get a handle to a chrome object, baddness ensues. So, please, don’t do that. Thanks.)
  • Embedded images, for example the logo on the home page, use the “data:” URL scheme to embed the picture’s data right into the page. Why? Performance? Or simplification.
  • If view source doesn’t work (like in the UI for “error 404”), then the inspector works, and will show you the source. (What’s the point of disabling view source? Setec Astronomy.)
  • In the inspector, you can click on things in the source and change them into input boxes, then you can change the source on the fly, and the results are shown in the page. Cool.
  • In about:stats, you can sort the columns by clicking on them. View source for a really nifty piece of Javascript I might lift and use someplace else myself.
  • About:network is totally cool. Click “Start I/O tracking” then go to another tab and load something. You get a trace of all the transactions. You can also click “Show current I/O status” to see which HTTP connections are open.
  • You have to type the about:foo URLs, if you click on them you don’t get anything. They are checking the referer.

Props to Stikiflem and Redneck Programmer who blazed this trail before me.

PS: What we really need is some kind of API so I can implement missing about: URLs like about:mozilla.


Comments

Leave a Reply

Your email address will not be published. Required fields are marked *