| # MacViews Release Plan |
| |
| ## Handy Links |
| |
| * [Phase 1 bugs](https://bugs.chromium.org/p/chromium/issues/list?can=2&q=Proj%3DMacViews+label%3Aphase1&colspec=ID+Pri+M+Stars+ReleaseBlock+Component+Status+Owner+Summary+OS+Modified&x=m&y=releaseblock&cells=ids) |
| * [Phase 2 bugs](https://bugs.chromium.org/p/chromium/issues/list?can=2&q=Proj%3DMacViews+label%3Aphase2&colspec=ID+Pri+M+Stars+ReleaseBlock+Component+Status+Owner+Summary+OS+Modified&x=m&y=releaseblock&cells=ids) |
| * [Other MacViews bugs](https://bugs.chromium.org/p/chromium/issues/list?can=2&q=Proj%3DMacViews+-label%3APhase1+-label%3APhase2&colspec=ID+Pri+M+Stars+ReleaseBlock+Component+Status+Owner+Summary+OS+Modified&x=m&y=releaseblock&cells=ids) |
| * [Catalog of chromium dialogs](https://docs.google.com/spreadsheets/d/1rChQOblJDsXevMxpUpvaPqK3QIMPdmd2iAvJtdeOeeY/edit#gid=0) |
| |
| ## Phase 1: Controls |
| |
| Implement Shiny Modern L&F for individual controls, most-commonly-used first. In |
| rough order: |
| |
| 1. Buttons |
| 2. Editboxes |
| 3. Comboboxes |
| 4. Radiobuttons/checkboxes |
| 5. Menubuttons |
| 6. Treeviews |
| 7. Tableviews |
| |
| This phase overlaps with phase 2. |
| |
| ## Phase 2: WebUI Cocoa Dialogs, Rubberband |
| |
| Once enough controls are done, wire up the Views versions of WebUI-styled Cocoa |
| dialogs, behind a new `MacViewsWebUIDialogs` feature. The WebUI-styled Cocoa |
| dialogs are: |
| |
| 1. Collected/blocked cookies UI |
| 2. Device permissions |
| 3. Extension install |
| 4. HTTP auth |
| 5. One-click signin |
| 6. Site permissions bubble |
| 7. "Card unmask prompt" (TODO(ellyjones): what is this?) |
| 8. Page info dialog |
| |
| Once all of these dialogs are converted and tested behind the feature, we can |
| ship to canary and dev channels and watch for any performance or crash rate |
| regressions. Doing all the WebUI-style dialogs at once will avoid having three |
| separate dialog UIs. |
| |
| This phase also includes implementation of rubber-band overscroll and fling |
| scrolling. This technology exists already in the renderer compositor - it needs |
| to be transplanted to the ui compositor. |
| |
| ## Phase 3: The Other Dialogs |
| |
| Once WebUI dialogs are converted en masse, we can convert other dialogs to Views |
| individually, and ship them without a flag flip or field trial. Cocoa dialogs |
| that are in native Cocoa style will gradually migrate to Views dialogs that are |
| in the Shiny Modern style. |
| |
| ## Phase 4: Omnibox & Top Chrome |
| |
| At this point, all dialogs are in Shiny Modern, but the rest of the browser |
| chrome is still Cocoa. |
| |
| Implement Cocoa L&F for any controls still needed for omnibox and top chrome. |
| TODO(ellyjones): which controls are these? |
| Implement Views versions of the omnibox and top chrome behind a new flag |
| `mac-views-browser-chrome`. |
| Get UI review of the new versions of the omnibox and top chrome. |
| Make the Views versions the default. |
| |
| ## Phase 5: `mac_views_browser=1` |
| At this point, all user-visible UI is done via Views, and we need to switch the |
| entire browser to a Views-only build: |
| |
| Check for performance regressions against `mac_views_browser=0`. |
| Check for stability regressions against `mac_views_browser=0`. |
| Check for a11y regressions through manual testing. |
| TODO(ellyjones): Figure out how feasible automated a11y regression testing is. |
| Switch `mac_views_browser` to 1 for Canary. |
| Cross fingers. |
| Watch metrics carefully. |
| If there's no surprising metrics changes or public outcry, keep |
| mac_views_browser=1 for dev, then beta, then stable. |
| |
| ## Phase 6: delete Cocoa |
| Since much of the Cocoa code is dead and we are no longer building with |
| `mac_views_browser=0`, remove dead Cocoa UI code. |
| |