EWS bubbles are being hidden due to lack of space.
authorross.kirsling@sony.com <ross.kirsling@sony.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 23 Aug 2018 23:57:56 +0000 (23:57 +0000)
committerross.kirsling@sony.com <ross.kirsling@sony.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 23 Aug 2018 23:57:56 +0000 (23:57 +0000)
https://bugs.webkit.org/show_bug.cgi?id=188607

Reviewed by Daniel Bates.

* PrettyPatch/PrettyPatch.rb:
* code-review.js:
* js/status-bubble.js: Added.
Refactor Review Patch page so that the postMessage to resize EWS iframes may be used on other pages too.

* template/en/default/attachment/edit.html.tmpl:
* template/en/default/attachment/list.html.tmpl:
Resize EWS iframes via postMessage on bug page and attachment details page.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@235262 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Websites/bugs.webkit.org/ChangeLog
Websites/bugs.webkit.org/PrettyPatch/PrettyPatch.rb
Websites/bugs.webkit.org/code-review.js
Websites/bugs.webkit.org/js/status-bubble.js [new file with mode: 0644]
Websites/bugs.webkit.org/template/en/default/attachment/edit.html.tmpl
Websites/bugs.webkit.org/template/en/default/attachment/list.html.tmpl

index 5aa77bc..c4b4088 100644 (file)
@@ -1,3 +1,19 @@
+2018-08-23  Ross Kirsling  <ross.kirsling@sony.com>
+
+        EWS bubbles are being hidden due to lack of space.
+        https://bugs.webkit.org/show_bug.cgi?id=188607
+
+        Reviewed by Daniel Bates.
+
+        * PrettyPatch/PrettyPatch.rb:
+        * code-review.js:
+        * js/status-bubble.js: Added.
+        Refactor Review Patch page so that the postMessage to resize EWS iframes may be used on other pages too.
+        
+        * template/en/default/attachment/edit.html.tmpl:
+        * template/en/default/attachment/list.html.tmpl:
+        Resize EWS iframes via postMessage on bug page and attachment details page. 
+
 2018-06-22  Daniel Bates  <dabates@apple.com>
 
         EWS for security bugs
 2018-06-22  Daniel Bates  <dabates@apple.com>
 
         EWS for security bugs
index 382b496..f503d11 100644 (file)
@@ -349,7 +349,7 @@ pre, .text {
   height: 4em;
 }
 
   height: 4em;
 }
 
-#statusBubbleContainer.wrap {
+.statusBubble.wrap {
   display: block;
 }
 
   display: block;
 }
 
@@ -488,7 +488,7 @@ div:focus {
   outline-offset: -1px;
 }
 
   outline-offset: -1px;
 }
 
-.statusBubble {
+.statusBubble > iframe {
   /* The width/height get set to the bubble contents via postMessage on browsers that support it. */
   width: 460px;
   height: 20px;
   /* The width/height get set to the bubble contents via postMessage on browsers that support it. */
   width: 460px;
   height: 20px;
@@ -524,6 +524,7 @@ div:focus {
 }
 </style>
 <script src="https://webkit.org/ajax/libs/jquery/jquery-1.4.2.min.js"></script> 
 }
 </style>
 <script src="https://webkit.org/ajax/libs/jquery/jquery-1.4.2.min.js"></script> 
+<script src="js/status-bubble.js"></script>
 <script src="code-review.js?version=48"></script>
 </head>
 EOF
 <script src="code-review.js?version=48"></script>
 </head>
 EOF
index 877b3b3..51897f6 100644 (file)
@@ -535,19 +535,7 @@ var CODE_REVIEW_UNITTEST;
     });
   }
 
     });
   }
 
-  window.addEventListener('message', function(e) {
-    if (e.origin != 'https://webkit-queues.webkit.org')
-      return;
-
-    if (e.data.height) {
-      $('.statusBubble')[0].style.height = e.data.height;
-      $('.statusBubble')[0].style.width = e.data.width;
-    }
-  }, false);
-
-  function handleStatusBubbleLoad(e) {
-    e.target.contentWindow.postMessage('containerMetrics', 'https://webkit-queues.webkit.org');
-  }
+  window.addEventListener('message', handleStatusBubbleMessage, false);
 
   function fetchHistory() {
     $.get('attachment.cgi?id=' + attachment_id + '&action=edit', function(data) {
 
   function fetchHistory() {
     $.get('attachment.cgi?id=' + attachment_id + '&action=edit', function(data) {
@@ -578,13 +566,12 @@ var CODE_REVIEW_UNITTEST;
       var details = $(data);
       addFlagsForAttachment(details);
 
       var details = $(data);
       addFlagsForAttachment(details);
 
-      statusBubble = document.createElement('iframe');
-      statusBubble.className = 'statusBubble';
+      var statusBubble = document.createElement('iframe');
       statusBubble.src  = 'https://webkit-queues.webkit.org/status-bubble/' + attachment_id;
       statusBubble.scrolling = 'no';
       // Can't append the HTML because we need to set the onload handler before appending the iframe to the DOM.
       statusBubble.src  = 'https://webkit-queues.webkit.org/status-bubble/' + attachment_id;
       statusBubble.scrolling = 'no';
       // Can't append the HTML because we need to set the onload handler before appending the iframe to the DOM.
-      statusBubble.onload = handleStatusBubbleLoad;
-      $('#statusBubbleContainer').append(statusBubble);
+      statusBubble.onload = function () { handleStatusBubbleLoad(this); };
+      $('.statusBubble').append(statusBubble);
 
       $('#toolbar .bugLink').html('<a href="/show_bug.cgi?id=' + bug_id + '" target="_blank">Bug ' + bug_id + '</a>');
     });
 
       $('#toolbar .bugLink').html('<a href="/show_bug.cgi?id=' + bug_id + '" target="_blank">Bug ' + bug_id + '</a>');
     });
@@ -1056,7 +1043,7 @@ var CODE_REVIEW_UNITTEST;
 
   function openOverallComments(e) {
     $('.overallComments textarea').addClass('open');
 
   function openOverallComments(e) {
     $('.overallComments textarea').addClass('open');
-    $('#statusBubbleContainer').addClass('wrap');
+    $('.statusBubble').addClass('wrap');
   }
 
   var g_overallCommentsInputTimer;
   }
 
   var g_overallCommentsInputTimer;
@@ -1080,7 +1067,7 @@ var CODE_REVIEW_UNITTEST;
           '<textarea placeholder="Overall comments"></textarea>' +
         '</div>' +
         '<div>' +
           '<textarea placeholder="Overall comments"></textarea>' +
         '</div>' +
         '<div>' +
-          '<span id="statusBubbleContainer"></span>' +
+          '<span class="statusBubble"></span>' +
           '<span class="actions">' +
             '<span class="links"><span class="bugLink"></span></span>' +
             '<span id="flagContainer"></span>' +
           '<span class="actions">' +
             '<span class="links"><span class="bugLink"></span></span>' +
             '<span id="flagContainer"></span>' +
diff --git a/Websites/bugs.webkit.org/js/status-bubble.js b/Websites/bugs.webkit.org/js/status-bubble.js
new file mode 100644 (file)
index 0000000..0b7588f
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2018 Sony Interactive Entertainment Inc.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ * 
+ * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
+ * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
+ * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
+ * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
+ * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
+ * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+ * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
+ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
+ * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
+ * THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+function handleStatusBubbleMessage(event) {
+    if (event.origin !== 'https://webkit-queues.webkit.org' || !event.data.height)
+        return;
+
+    for (const iframe of document.querySelectorAll('.statusBubble > iframe')) {
+        if (iframe.contentWindow === event.source) {
+            iframe.style.height = event.data.height + 'px';
+            iframe.style.width = event.data.width + 'px';
+            break;
+        }
+    }
+}
+
+function handleStatusBubbleLoad(iframe) {
+    iframe.contentWindow.postMessage('containerMetrics', 'https://webkit-queues.webkit.org');
+}
index 51533ac..eca018a 100644 (file)
 [% can_edit = attachment.validate_can_edit %]
 [% editable_or_hide = can_edit ? "" : " bz_hidden_option" %]
 
 [% can_edit = attachment.validate_can_edit %]
 [% editable_or_hide = can_edit ? "" : " bz_hidden_option" %]
 
+<script src="[% 'js/status-bubble.js' FILTER mtime %]"></script>
+<script>
+  window.addEventListener('message', handleStatusBubbleMessage, false);
+</script>
+
 <form method="post" action="attachment.cgi" onsubmit="normalizeComments();">
   <input type="hidden" name="id" value="[% attachment.id %]">
   <input type="hidden" name="action" value="update">
 <form method="post" action="attachment.cgi" onsubmit="normalizeComments();">
   <input type="hidden" name="id" value="[% attachment.id %]">
   <input type="hidden" name="action" value="update">
 
         <div class="statusBubble">
           <iframe src="https://webkit-queues.webkit.org/status-bubble/[% attachment.id %]"
 
         <div class="statusBubble">
           <iframe src="https://webkit-queues.webkit.org/status-bubble/[% attachment.id %]"
-                  style="width: 600px; height: 20px; border: none;" scrolling="no">
+                  style="width: 600px; height: 20px; border: none;" scrolling="no" onload="handleStatusBubbleLoad(this)">
           </iframe>
         </div>
         <br>
           </iframe>
         </div>
         <br>
index eadbd20..dc6c5d7 100644 (file)
@@ -8,8 +8,11 @@
 
 [% RETURN UNLESS attachments.size || Param("maxattachmentsize") || Param("maxlocalattachment") %]
 
 
 [% RETURN UNLESS attachments.size || Param("maxattachmentsize") || Param("maxlocalattachment") %]
 
+<script src="[% 'js/status-bubble.js' FILTER mtime %]"></script>
 <script type="text/javascript">
 <!--
 <script type="text/javascript">
 <!--
+window.addEventListener('message', handleStatusBubbleMessage, false);
+
 function toggle_display(link) {
     var table = document.getElementById("attachment_table");
     var view_all = document.getElementById("view_all");
 function toggle_display(link) {
     var table = document.getElementById("attachment_table");
     var view_all = document.getElementById("view_all");
@@ -153,7 +156,7 @@ function toggle_display(link) {
           [% IF attachment.ispatch %]
           <div class="statusBubble">
             <iframe src="https://webkit-queues.webkit.org/status-bubble/[% attachment.id %]"
           [% IF attachment.ispatch %]
           <div class="statusBubble">
             <iframe src="https://webkit-queues.webkit.org/status-bubble/[% attachment.id %]"
-                    style="width: 600px; height: 20px; border: none;" scrolling="no">
+                    style="width: 600px; height: 20px; border: none;" scrolling="no" onload="handleStatusBubbleLoad(this)">
             </iframe>
           </div>
           [% END %]
             </iframe>
           </div>
           [% END %]