Index: docs/ui/views/macviews_release.md |
diff --git a/docs/ui/views/macviews_release.md b/docs/ui/views/macviews_release.md |
new file mode 100644 |
index 0000000000000000000000000000000000000000..ac5dd380b73280f0f52ddd43f2cb2ba673abb5ac |
--- /dev/null |
+++ b/docs/ui/views/macviews_release.md |
@@ -0,0 +1,85 @@ |
+# 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. Website settings 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. |
+ |