Confirmation for rendering large diffs with whole file
If the user views a very large diff while "Whole file" is enabled in
their preferences, rendering may lock up their browser. With this
change, instead of rendering, users are warned and allowed to bypass the
warning (risking browser lock up) or render with a context that is less
than whole file.
Bug: Issue 6402
Change-Id: I6e97c06598fb5f6900c925127ab6a99693b8aa7f
diff --git a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.html b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.html
index 5738b40..5319ace 100644
--- a/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.html
+++ b/polygerrit-ui/app/elements/diff/gr-diff/gr-diff.html
@@ -198,6 +198,18 @@
font-size: var(--font-size, 12px);
padding: 0.5em 0 0.5em 4em;
}
+ #sizeWarning {
+ display: none;
+ margin: 1em auto;
+ max-width: 60em;
+ text-align: center;
+ }
+ #sizeWarning gr-button {
+ margin: 1em;
+ }
+ #sizeWarning.warn {
+ display: block;
+ }
</style>
<style include="gr-theme-default"></style>
<div id="diffHeader" hidden$="[[_computeDiffHeaderHidden(_diffHeaderItems)]]">
@@ -232,6 +244,18 @@
</gr-diff-highlight>
</gr-diff-selection>
</div>
+ <div id="sizeWarning" class$="[[_computeWarningClass(_showWarning)]]">
+ <p>
+ Prevented render because "Whole file" is enabled and this diff is very
+ large (about [[_diffLength(_diff)]] lines).
+ </p>
+ <gr-button on-tap="_handleLimitedBypass">
+ Render with limited context
+ </gr-button>
+ <gr-button on-tap="_handleFullBypass">
+ Render anyway (may be slow)
+ </gr-button>
+ </div>
<gr-rest-api-interface id="restAPI"></gr-rest-api-interface>
</template>
<script src="gr-diff-line.js"></script>