| Index: chrome/browser/resources/new_new_tab.html | 
| diff --git a/chrome/browser/resources/new_new_tab.html b/chrome/browser/resources/new_new_tab.html | 
| index 369cec0b73d266fd79769436dd19714149a0cb32..8700500de10543d9ff47aa6ca34eb92cfc320985 100644 | 
| --- a/chrome/browser/resources/new_new_tab.html | 
| +++ b/chrome/browser/resources/new_new_tab.html | 
| @@ -67,10 +67,16 @@ registerCallback('setShownSections'); | 
| * @enum {number} | 
| */ | 
| var Section = { | 
| -  THUMB: 1, | 
| -  APPS: 64 | 
| +  THUMB: 1 << 0, | 
| +  APPS: 1 << 6 | 
| }; | 
|  | 
| +// These are used to hide sections and are part of the |shownSections| bitmask, | 
| +// but are not sections themselves. | 
| +var MINIMIZED_THUMB = 1 << (0 + 16); | 
| +var MINIMIZED_RECENT = 1 << (2 + 16); | 
| +var MINIMIZED_APPS = 1 << (6 + 16); | 
| + | 
| var shownSections = templateData['shown_sections']; | 
|  | 
| // Until themes can clear the cache, force-reload the theme stylesheet. | 
| @@ -135,6 +141,7 @@ if ('mode' in hashParams) { | 
| <img class="disclosure" img src="ntp/ntp_disclosure_triangle.png"> | 
| <div class="back"></div> | 
| <span i18n-content="apps"></span> | 
| +        <button class="section-close-button"></button> | 
| </h2> | 
| <div class="miniview"></div> | 
| </div> | 
| @@ -146,6 +153,7 @@ if ('mode' in hashParams) { | 
| <span i18n-content="mostvisited"></span> | 
| <button id="most-visited-settings" i18n-content="restorethumbnails"> | 
| </button> | 
| +        <button class="section-close-button"></button> | 
| </h2> | 
| <div class="miniview"></div> | 
| </div> | 
| @@ -157,6 +165,7 @@ if ('mode' in hashParams) { | 
| <h2> | 
| <div class="back"></div> | 
| <span i18n-content="recentlyclosed"></span> | 
| +        <button class="section-close-button"></button> | 
| </h2> | 
| <div class="miniview"></div> | 
| </div> | 
| @@ -168,6 +177,27 @@ if ('mode' in hashParams) { | 
| </div> | 
| </div> | 
| </div> | 
| + | 
| +  <div id="closed-sections-bar"> | 
| +    <!-- The default visibility of these buttons needs to be the opposite of the | 
| +         default visibility of the corresponding sections. --> | 
| +    <button id="apps-button" | 
| +            menu="#apps-menu"> | 
| +      <span i18n-content="apps"></span> | 
| +      <img src="ntp/ntp_disclosure_triangle.png"> | 
| +    </button> | 
| +    <button id="most-visited-button" | 
| +            class="disabled" | 
| +            menu="#most-visited-menu"> | 
| +      <span i18n-content="mostvisited"></span> | 
| +      <img src="ntp/ntp_disclosure_triangle.png"> | 
| +    </button> | 
| +    <button id="recently-closed-button" | 
| +            menu="#recently-closed-menu"> | 
| +      <span i18n-content="recentlyclosed"></span> | 
| +      <img src="ntp/ntp_disclosure_triangle.png"> | 
| +    </button> | 
| +  </div> | 
| </div>  <!-- main --> | 
|  | 
| <div class="window-menu" id="window-tooltip"></div> | 
| @@ -194,6 +224,11 @@ if ('mode' in hashParams) { | 
| <button command="#apps-uninstall-command"></button> | 
| </menu> | 
|  | 
| +<!-- These are populated dynamically --> | 
| +<menu id="apps-menu"></menu> | 
| +<menu id="most-visited-menu"></menu> | 
| +<menu id="recently-closed-menu"></menu> | 
| + | 
| </body> | 
|  | 
| <script src="shared/js/i18n_template.js"></script> | 
| @@ -226,8 +261,27 @@ cr.ui.decorate('button[menu]', cr.ui.MenuButton); | 
| </script> | 
|  | 
| <script> | 
| +  initializeSection('apps', MINIMIZED_APPS, Section.APPS); | 
| +  initializeSection('most-visited', MINIMIZED_THUMB, Section.THUMB); | 
| +  initializeSection('recently-closed', MINIMIZED_RECENT); | 
| + | 
| updateSimpleSection('apps', Section.APPS); | 
| updateSimpleSection('most-visited', Section.THUMB); | 
| +  var appsInitiallyVisible = !(shownSections & MINIMIZED_APPS); | 
| +  var mostVisitedInitiallyVisible = !(shownSections & MINIMIZED_THUMB); | 
| +  var recentlyClosedInitiallyVisible = !(shownSections & MINIMIZED_RECENT); | 
| +  // Apps and recently closed start as hidden in the HTML, most visited is | 
| +  // initially visible. Adapt to the change received from the prefs by forcing | 
| +  // all three sections to update. | 
| +  shownSections &= ~MINIMIZED_THUMB; | 
| +  shownSections |= MINIMIZED_APPS | MINIMIZED_RECENT; | 
| +  setSectionVisible('apps', Section.APPS, appsInitiallyVisible, MINIMIZED_APPS); | 
| +  setSectionVisible( | 
| +      'most-visited', Section.THUMB, | 
| +      mostVisitedInitiallyVisible, MINIMIZED_THUMB); | 
| +  setSectionVisible( | 
| +      'recently-closed', undefined, | 
| +      recentlyClosedInitiallyVisible, MINIMIZED_RECENT); | 
| layoutSections(); | 
| </script> | 
| </html> | 
|  |