Merge "Handle div size & fix error for undefined images"
diff --git a/gr-opacity-diff-mode/gr-opacity-diff-mode.html b/gr-opacity-diff-mode/gr-opacity-diff-mode.html
index 0a20ea9..d884ba9 100644
--- a/gr-opacity-diff-mode/gr-opacity-diff-mode.html
+++ b/gr-opacity-diff-mode/gr-opacity-diff-mode.html
@@ -22,43 +22,43 @@
       }
       img {
         display: block;
-        margin:auto;
-        position: absolute;
         height: var(--img-height);
+        margin: auto;
+        position: absolute;
         width: var(--img-width);
       }
       #imageRevision {
         opacity: var(--my-opacity-value);
         z-index: 1;
       }
-      #imageDiv {
-        position: relative;
-        margin: auto;
-        width: 500px;
+      #imageDivContainer {
+        display: flex;
+        height: var(--div-height);
+        justify-content: space-around;
       }
     </style>
-    <div id="imageDiv">
+    <div id="imageDivContainer">
       <img id="imageBase"/>
-      <img id="imageRevision" data-opacity$="{{opacityValue}}"/>
+      <img data-opacity$="{{opacityValue}}" id="imageRevision"/>
     </div>
     <div>
       <label>
         <input
             id="scaleSizesToggle"
-            type="checkbox"
-            on-tap="handleScaleSizesToggle">
+            on-tap="handleScaleSizesToggle"
+            type="checkbox">
         Scale to same size
       </label>
     </div>
     <label for="opacitySlider">Opacity</label>
     <input
-      type="range"
       id="opacitySlider"
-      min="0.0"
       max="1.0"
-      value="1.0"
+      min="0.0"
+      on-input="handleOpacityChange"
       step=".01"
-      on-input="handleOpacityChange"/>
+      type="range"
+      value="1.0"/>
   </template>
  <script src="gr-opacity-diff-mode.js"></script>
 </dom-module>
\ No newline at end of file
diff --git a/gr-opacity-diff-mode/gr-opacity-diff-mode.js b/gr-opacity-diff-mode/gr-opacity-diff-mode.js
index 7e3591d..237d413 100644
--- a/gr-opacity-diff-mode/gr-opacity-diff-mode.js
+++ b/gr-opacity-diff-mode/gr-opacity-diff-mode.js
@@ -26,10 +26,12 @@
       if (this.revisionImage) {
         const srcRevision = this.computeSrcString(this.revisionImage);
         this.$.imageRevision.setAttribute('src', srcRevision);
+        this.resizeDiffContainerHeight();
       }
       if (this.baseImage) {
         const srcBase = this.computeSrcString(this.baseImage);
         this.$.imageBase.setAttribute('src', srcBase);
+        this.resizeDiffContainerHeight();
       }
     },
 
@@ -45,7 +47,8 @@
     handleScaleSizesToggle() {
       let width;
       let height;
-      if (this.$.scaleSizesToggle.checked) {
+      if (this.$.scaleSizesToggle.checked &&
+          this.baseImage && this.revisionImage) {
         width = Math.max(this.revisionImage._width, this.baseImage._width);
         height = Math.max(this.revisionImage._height, this.baseImage._height);
       }
@@ -53,5 +56,13 @@
       this.customStyle['--img-height'] = height ? height + 'px' : null;
       this.updateStyles();
     },
+
+    resizeDiffContainerHeight() {
+      const maxHeight = Math.max(
+          this.baseImage ? this.baseImage._height : 0,
+          this.revisionImage ? this.revisionImage._height : 0);
+      this.customStyle['--div-height'] = maxHeight + 'px';
+      this.updateStyles();
+    },
   });
 })();
\ No newline at end of file
diff --git a/gr-opacity-diff-mode/gr-opacity-diff-mode_test.html b/gr-opacity-diff-mode/gr-opacity-diff-mode_test.html
index 6c63c1a..a12913f 100644
--- a/gr-opacity-diff-mode/gr-opacity-diff-mode_test.html
+++ b/gr-opacity-diff-mode/gr-opacity-diff-mode_test.html
@@ -118,5 +118,17 @@
         assert.equal(element.customStyle['--img-height'], '400px');
       });
     });
+    test('resize the div container for base & revision image comparison', () => {
+      element.baseImage = {
+        _height: 500,
+      };
+      element.revisionImage = {
+        _height: 300,
+      };
+      assert.equal(element.customStyle['--div-height'], undefined);
+      element.resizeDiffContainerHeight();
+      flushAsynchronousOperations();
+      assert.equal(element.customStyle['--div-height'], '500px');
+    });
   });
 </script>
\ No newline at end of file