Chromium Code Reviews| Index: chrome/renderer/resources/extensions/inject_app_titlebar.js | 
| diff --git a/chrome/renderer/resources/extensions/inject_app_titlebar.js b/chrome/renderer/resources/extensions/inject_app_titlebar.js | 
| new file mode 100644 | 
| index 0000000000000000000000000000000000000000..7c13d2f127f30ed976e6e24c3f3185a968ee2fb4 | 
| --- /dev/null | 
| +++ b/chrome/renderer/resources/extensions/inject_app_titlebar.js | 
| @@ -0,0 +1,28 @@ | 
| +exports.didCreateDocumentElement = function(inject_titlebar) { | 
| + if (inject_titlebar) { | 
| + var root = new WebKitShadowRoot(document.childNodes[0]); | 
| + root.appendChild(document.createElement('style')).innerText = | 
| + "x-titlebar { height: 24px; width: 100%; position: absolute; left: 0; top: 0; }\n" + | 
| + "div { padding-top: 24px; }\n" + | 
| + ":-webkit-full-screen * { display: none; }\n" + | 
| + ":-webkit-full-screen-document * { display: none; }\n" + | 
| + "div:-webkit-full-screen, div:-webkit-full-screen-document { padding-top: 0; }\n" + | 
| + "button { -webkit-widget-region: region(control rectangle); }\n" + | 
| + "button.close { border: 0; background-color: transparent; width: 16px; height: 16px; position: absolute; right: 4px; top: 4px; }\n" + | 
| + // TODO(jeremya): these are ui/resources/default_100_percent/close_bar* | 
| + // and it would be good to find a way to directly reference them | 
| 
 
Mihai Parparita -not on Chrome
2012/08/30 01:13:47
We have a chrome-extension-resource for resources
 
 | 
| + // instead of duplicating them here. | 
| + "button.close { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAA9ElEQVQ4T7VTQQ6CMBCk0HAyIfAQbiZ+QHyDL/QLxqvx4MWDB+MvFAWMAuKsacmmSjkQSDbQ2Z3Z3WkQzsBHDOQ7owgsMdUacTGmi3BeIFYcNycgciGlfFRVtcd3qoojz/PmdV0XOD8RGy1iCoQgT5G8IyREjni7ICcg58ilwA7A8i4BwgMUxkKIV9M0PggTAoFlJpnwLhO5iEuFapq2s20CyoWIGbpeaRICyrI889FtAtqwGxdQ65yYsV8NcwVN5obR/uTJW4mQsfp2fgToGjPqbBjWeoJVfNRsbSskSO7+7BsAiznZdgu6Qe97lH+htysv+AA10msRAt5JYQAAAABJRU5ErkJggg==); }\n" + | 
| + "button.close:hover { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABTElEQVQ4T2NkoBAwUqifAcWA////KwANFAPiV4yMjA+QDcclBzcApCA6Otpz2bJluQkJCf3z58/fDTMEnxyyAWZADQuAtj4B4ncpKSnbZs+efQjkCqjBmUDmMyD+ADSwD6j2FEgOxQWJiYmuCxYscIYawpWamnr89+/fHECxbKjmB2VlZbs6OzsvwFyHEQZATXZz5syxAGr4BMR8QCwJDYvn1dXVO1taWi4ihw9GLID8m5aWZgt0viXUEBaQAUDNh9E1o3gBFuIgA6Be8QKK3QXiLyA5oNMvIDsdph7DC9AASwcquI9sAJDNk5GRcX769OlHsXoBKapAoQ2KiQcgPwMDkbGrq8sGyP8DChNQwM6aNeswRiACDYBF4yOgwnuwAAM5NTMz03rGjBnWsIAFql2ANxqB/l2B7F/kgCUYjUBbyEvKsFAllaY4NwIAmJDPEd+LFvYAAAAASUVORK5CYII=); }\n" + | 
| + "button.close:active { background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAAAZ0lEQVQ4T2NkoBAwUqifgeoG2AFd1AfERUB8CM11WOXQXXAGSROyITDNMGkTGAPdAHSFIENAAOQqGEBxHbYwQDcE2ScYXsMViNgMwRYuOGOBIgMo8gLFgUi1aCQ7IZGcNaieF0h2AQCMABwRdsuhtQAAAABJRU5ErkJggg==); }\n" | 
| + var container = root.appendChild(document.createElement('div')); | 
| + var titlebar = container.appendChild(document.createElement('x-titlebar')); | 
| + var closeButton = titlebar.appendChild(document.createElement('button')); | 
| + closeButton.setAttribute('class', 'close'); | 
| + closeButton.addEventListener('click', function() { window.close(); }); | 
| + container.appendChild(document.createElement('content')); | 
| + } | 
| + document.onreadystatechange = function() { | 
| 
 
Mihai Parparita -not on Chrome
2012/08/30 01:13:47
Can you not use this to determine when to inject t
 
jeremya
2012/08/30 01:45:18
Experimentally, it doesn't. I only get the 'intera
 
jeremya
2012/08/30 01:50:06
(and also: readystatechange doesn't bubble to wind
 
 | 
| + console.log(document.readyState); | 
| + } | 
| 
 
abarth-chromium
2012/08/29 23:51:20
Presumably you'll want to remove this part before
 
jeremya
2012/08/30 02:21:02
Done.
 
 | 
| +} |