예제 #1
0
    def testFileResourcesCRLF(self):
        '''Tests inlined image file resource when url() is preceded by a Windows
    style line break.'''

        tmp_dir = util.TempDir({
            'test.css': '''
      .image {
        background:\r\nurl(test.png);
      }
      ''',
            'test.png': 'PNG DATA',
            '2x/test.png': '2x PNG DATA',
        })

        html = chrome_html.ChromeHtml(tmp_dir.GetPath('test.css'))
        html.SetDefines({'scale_factors': '2x'})
        html.SetAttributes({'flattenhtml': 'true'})
        html.Parse()
        self.failUnlessEqual(
            StandardizeHtml(html.GetData('en', 'utf-8')),
            StandardizeHtml('''
      .image {
        background: -webkit-image-set(url(data:image/png;base64,UE5HIERBVEE=) 1x, url(data:image/png;base64,MnggUE5HIERBVEE=) 2x);
      }
      '''))
        tmp_dir.CleanUp()
예제 #2
0
    def testFileResourcesMultipleBackgroundsWithNewline2(self):
        '''Tests inlined image file resources with line break before first url()
    and before second url().'''

        tmp_dir = util.TempDir({
            'test.css': '''
      .image {
        background:
          url(test.png),
          url(test.png);
      }
      ''',
            'test.png': 'PNG DATA',
            '2x/test.png': '2x PNG DATA',
        })

        html = chrome_html.ChromeHtml(tmp_dir.GetPath('test.css'))
        html.SetDefines({'scale_factors': '2x'})
        html.SetAttributes({'flattenhtml': 'true'})
        html.Parse()
        self.failUnlessEqual(
            StandardizeHtml(html.GetData('en', 'utf-8')),
            StandardizeHtml('''
      .image {
        background: -webkit-image-set(url(data:image/png;base64,UE5HIERBVEE=) 1x, url(data:image/png;base64,MnggUE5HIERBVEE=) 2x),
          -webkit-image-set(url(data:image/png;base64,UE5HIERBVEE=) 1x, url(data:image/png;base64,MnggUE5HIERBVEE=) 2x);
      }
      '''))
        tmp_dir.CleanUp()
예제 #3
0
    def testFileResourcesSubdirs(self):
        '''Tests inlined image file resources if url() filename is in a subdir.'''

        tmp_dir = util.TempDir({
            'test.css': '''
      .image {
        background: url('some/sub/path/test.png');
      }
      ''',
            'some/sub/path/test.png': 'PNG DATA',
            'some/sub/path/2x/test.png': '2x PNG DATA',
        })

        html = chrome_html.ChromeHtml(tmp_dir.GetPath('test.css'))
        html.SetDefines({'scale_factors': '2x'})
        html.SetAttributes({'flattenhtml': 'true'})
        html.Parse()
        self.failUnlessEqual(
            StandardizeHtml(html.GetData('en', 'utf-8')),
            StandardizeHtml('''
      .image {
        background: -webkit-image-set(url('data:image/png;base64,UE5HIERBVEE=') 1x, url('data:image/png;base64,MnggUE5HIERBVEE=') 2x);
      }
      '''))
        tmp_dir.CleanUp()
예제 #4
0
    def testFileResourcesPreprocess(self):
        '''Tests preprocessed image file resources with available high DPI
    assets.'''

        tmp_dir = util.TempDir({
            'test.css': '''
      .image {
        background: url('test.png');
      }
      ''',
            'test.png': 'PNG DATA',
            '1.4x/test.png': '1.4x PNG DATA',
            '1.8x/test.png': '1.8x PNG DATA',
        })

        html = chrome_html.ChromeHtml(tmp_dir.GetPath('test.css'))
        html.SetDefines({'scale_factors': '1.4x,1.8x'})
        html.SetAttributes({'flattenhtml': 'false', 'preprocess': 'true'})
        html.Parse()
        self.failUnlessEqual(
            StandardizeHtml(html.GetData('en', 'utf-8')),
            StandardizeHtml('''
      .image {
        background: -webkit-image-set(url('test.png') 1x, url('1.4x/test.png') 1.4x, url('1.8x/test.png') 1.8x);
      }
      '''))
        tmp_dir.CleanUp()
예제 #5
0
    def testFileResourcesImageTag(self):
        '''Tests inlined image file resources with available high DPI assets on
    an image tag.'''

        tmp_dir = util.TempDir({
            'index.html': '''
      <!DOCTYPE HTML>
      <html>
        <body>
          <img id="foo" src="test.png">
        </body>
      </html>
      ''',
            'test.png': 'PNG DATA',
            '2x/test.png': '2x PNG DATA',
        })

        html = chrome_html.ChromeHtml(tmp_dir.GetPath('index.html'))
        html.SetDefines({'scale_factors': '2x'})
        html.SetAttributes({'flattenhtml': 'true'})
        html.Parse()
        self.failUnlessEqual(
            StandardizeHtml(html.GetData('en', 'utf-8')),
            StandardizeHtml('''
      <!DOCTYPE HTML>
      <html>
        <body>
          <img id="foo" src="data:image/png;base64,UE5HIERBVEE=" style="content: -webkit-image-set(url('data:image/png;base64,UE5HIERBVEE=') 1x, url('data:image/png;base64,MnggUE5HIERBVEE=') 2x);">
        </body>
      </html>
      '''))
        tmp_dir.CleanUp()
예제 #6
0
    def testExpandVariablesInFilename(self):
        '''
    Tests variable substitution in filenames while flattening images
    with multiple scale factors.
    '''

        tmp_dir = util.TempDir({
            'index.html': '''
      <!DOCTYPE HTML>
      <html>
        <head>
          <link rel="stylesheet" href="test.css">
        </head>
        <body>
          <!-- Don't need a body. -->
        </body>
      </html>
      ''',
            'test.css': '''
      .image {
        background: url('test[WHICH].png');
      }
      ''',
            'test1.png': 'PNG DATA',
            '1.4x/test1.png': '1.4x PNG DATA',
            '1.8x/test1.png': '1.8x PNG DATA',
        })

        def replacer(var, repl):
            return lambda filename: filename.replace('[%s]' % var, repl)

        html = chrome_html.ChromeHtml(tmp_dir.GetPath('index.html'))
        html.SetDefines({'scale_factors': '1.4x,1.8x'})
        html.SetAttributes({'flattenhtml': 'true'})
        html.SetFilenameExpansionFunction(replacer('WHICH', '1'))
        html.Parse()
        self.failUnlessEqual(
            StandardizeHtml(html.GetData('en', 'utf-8')),
            StandardizeHtml('''
      <!DOCTYPE HTML>
      <html>
        <head>
          <style>
      .image {
        background: -webkit-image-set(url('data:image/png;base64,UE5HIERBVEE=') 1x, url('data:image/png;base64,MS40eCBQTkcgREFUQQ==') 1.4x, url('data:image/png;base64,MS44eCBQTkcgREFUQQ==') 1.8x);
      }
      </style>
        </head>
        <body>
          <!-- Don't need a body. -->
        </body>
      </html>
      '''))
        tmp_dir.CleanUp()
예제 #7
0
    def testRemoveUnsupportedScale(self):
        '''Tests removing an unsupported scale factor from an explicit image-set.'''

        tmp_dir = util.TempDir({
            'index.html': '''
      <!DOCTYPE HTML>
      <html>
        <head>
          <link rel="stylesheet" href="test.css">
        </head>
        <body>
          <!-- Don't need a body. -->
        </body>
      </html>
      ''',
            'test.css': '''
      .image {
        background: -webkit-image-set(url('test.png') 1x,
                                      url('test1.4.png') 1.4x,
                                      url('test1.8.png') 1.8x);
      }
      ''',
            'test.png': 'PNG DATA',
            'test1.4.png': '1.4x PNG DATA',
            'test1.8.png': '1.8x PNG DATA',
        })

        html = chrome_html.ChromeHtml(tmp_dir.GetPath('index.html'))
        html.SetDefines({'scale_factors': '1.8x'})
        html.SetAttributes({'flattenhtml': 'true'})
        html.Parse()
        self.failUnlessEqual(
            StandardizeHtml(html.GetData('en', 'utf-8')),
            StandardizeHtml('''
      <!DOCTYPE HTML>
      <html>
        <head>
          <style>
      .image {
        background: -webkit-image-set(url('data:image/png;base64,UE5HIERBVEE=') 1x,
                                      url('data:image/png;base64,MS44eCBQTkcgREFUQQ==') 1.8x);
      }
      </style>
        </head>
        <body>
          <!-- Don't need a body. -->
        </body>
      </html>
      '''))
        tmp_dir.CleanUp()
예제 #8
0
    def testThemeResources(self):
        '''Tests inserting high DPI aviator://theme references.'''

        tmp_dir = util.TempDir({
            'index.html':
            '''
      <!DOCTYPE HTML>
      <html>
        <head>
          <link rel="stylesheet" href="test.css">
        </head>
        <body>
          <!-- Don't need a body. -->
        </body>
      </html>
      ''',
            'test.css':
            '''
      .image {
        background: url('aviator://theme/IDR_RESOURCE_NAME');
        content: url('aviator://theme/IDR_RESOURCE_NAME_WITH_Q?$1');
      }
      ''',
        })

        html = chrome_html.ChromeHtml(tmp_dir.GetPath('index.html'))
        html.SetDefines({'scale_factors': '2x'})
        html.SetAttributes({'flattenhtml': 'true'})
        html.Parse()
        self.failUnlessEqual(
            StandardizeHtml(html.GetData('en', 'utf-8')),
            StandardizeHtml('''
      <!DOCTYPE HTML>
      <html>
        <head>
          <style>
      .image {
        background: -webkit-image-set(url('aviator://theme/IDR_RESOURCE_NAME') 1x, url('aviator://theme/IDR_RESOURCE_NAME@2x') 2x);
        content: -webkit-image-set(url('aviator://theme/IDR_RESOURCE_NAME_WITH_Q?$1') 1x, url('aviator://theme/IDR_RESOURCE_NAME_WITH_Q@2x?$1') 2x);
      }
      </style>
        </head>
        <body>
          <!-- Don't need a body. -->
        </body>
      </html>
      '''))
        tmp_dir.CleanUp()
예제 #9
0
    def testFileResources(self):
        '''Tests inlined image file resources with available high DPI assets.'''

        tmp_dir = util.TempDir({
            'index.html': '''
      <!DOCTYPE HTML>
      <html>
        <head>
          <link rel="stylesheet" href="test.css">
        </head>
        <body>
          <!-- Don't need a body. -->
        </body>
      </html>
      ''',
            'test.css': '''
      .image {
        background: url('test.png');
      }
      ''',
            'test.png': 'PNG DATA',
            '1.4x/test.png': '1.4x PNG DATA',
            '1.8x/test.png': '1.8x PNG DATA',
        })

        html = chrome_html.ChromeHtml(tmp_dir.GetPath('index.html'))
        html.SetDefines({'scale_factors': '1.4x,1.8x'})
        html.SetAttributes({'flattenhtml': 'true'})
        html.Parse()
        self.failUnlessEqual(
            StandardizeHtml(html.GetData('en', 'utf-8')),
            StandardizeHtml('''
      <!DOCTYPE HTML>
      <html>
        <head>
          <style>
      .image {
        background: -webkit-image-set(url('data:image/png;base64,UE5HIERBVEE=') 1x, url('data:image/png;base64,MS40eCBQTkcgREFUQQ==') 1.4x, url('data:image/png;base64,MS44eCBQTkcgREFUQQ==') 1.8x);
      }
      </style>
        </head>
        <body>
          <!-- Don't need a body. -->
        </body>
      </html>
      '''))
        tmp_dir.CleanUp()