Add js_interface_generator for generating extensions interfaces

BUG=563744

Review URL: https://codereview.chromium.org/1488773003

Cr-Commit-Position: refs/heads/master@{#364423}
diff --git a/tools/json_schema_compiler/code.py b/tools/json_schema_compiler/code.py
index e454e5d..d637026 100644
--- a/tools/json_schema_compiler/code.py
+++ b/tools/json_schema_compiler/code.py
@@ -29,8 +29,11 @@
     strip_right: whether or not trailing whitespace should be stripped.
     """
 
-    prefix = indent_level * ' ' if indent_level else ''.join(
-        self._line_prefixes)
+    if line:
+      prefix = indent_level * ' ' if indent_level else ''.join(
+          self._line_prefixes)
+    else:
+      prefix = ''
 
     if strip_right:
       line = line.rstrip()
@@ -170,6 +173,14 @@
         self._code[i].substitute = False
     return self
 
+  def TrimTrailingNewlines(self):
+    """Trims any trailing newlines.
+    """
+    while self._code:
+      if self._code[-1].value != '':
+        return
+      self._code = self._code[:-1]
+
   def Render(self):
     """Renders Code as a string.
     """