This also fixed a bug in `screen` as it should always use current origin instead of plugin assets origin. Change-Id: I6c7385b20dc5b772000d26e08d82bc76dd2d5691
		
			
				
	
	
		
			82 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
/**
 | 
						|
 * @license
 | 
						|
 * Copyright (C) 2020 The Android Open Source Project
 | 
						|
 *
 | 
						|
 * Licensed under the Apache License, Version 2.0 (the "License");
 | 
						|
 * you may not use this file except in compliance with the License.
 | 
						|
 * You may obtain a copy of the License at
 | 
						|
 *
 | 
						|
 * http://www.apache.org/licenses/LICENSE-2.0
 | 
						|
 *
 | 
						|
 * Unless required by applicable law or agreed to in writing, software
 | 
						|
 * distributed under the License is distributed on an "AS IS" BASIS,
 | 
						|
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
						|
 * See the License for the specific language governing permissions and
 | 
						|
 * limitations under the License.
 | 
						|
 */
 | 
						|
function populateWithDummyData(coverageData) {
 | 
						|
  coverageData['/COMMIT_MSG'] = {
 | 
						|
    linesMissingCoverage: [3, 4, 7, 14],
 | 
						|
    totalLines: 14,
 | 
						|
    changeNum: 94,
 | 
						|
    patchNum: 2,
 | 
						|
  };
 | 
						|
 | 
						|
  // more coverage info on other files
 | 
						|
}
 | 
						|
 | 
						|
/**
 | 
						|
 * This plugin will add a toggler on file diff page to
 | 
						|
 * display fake coverage data.
 | 
						|
 *
 | 
						|
 * As the fake coverage data only provided for COMMIT_MSG file,
 | 
						|
 * so it will only work for COMMIT_MSG file diff.
 | 
						|
 */
 | 
						|
Gerrit.install(plugin => {
 | 
						|
  const coverageData = {};
 | 
						|
  let displayCoverage = false;
 | 
						|
  const annotationApi = plugin.annotationApi();
 | 
						|
  const styleApi = plugin.styles();
 | 
						|
 | 
						|
  const coverageStyle = styleApi.css('background-color: #EF9B9B !important');
 | 
						|
  const emptyStyle = styleApi.css('');
 | 
						|
 | 
						|
  annotationApi.addLayer(context => {
 | 
						|
    if (Object.keys(coverageData).length === 0) {
 | 
						|
      // Coverage data is not ready yet.
 | 
						|
      return;
 | 
						|
    }
 | 
						|
    const path = context.path;
 | 
						|
    const line = context.line;
 | 
						|
    // Highlight lines missing coverage with this background color if
 | 
						|
    // coverage should be displayed, else do nothing.
 | 
						|
    const annotationStyle = displayCoverage
 | 
						|
      ? coverageStyle
 | 
						|
      : emptyStyle;
 | 
						|
 | 
						|
    // ideally should check to make sure its the same patch for same change
 | 
						|
    // for demo purpose, this is only checking to make sure we have fake data
 | 
						|
    if (coverageData[path]) {
 | 
						|
      const linesMissingCoverage = coverageData[path].linesMissingCoverage;
 | 
						|
      if (linesMissingCoverage.includes(line.afterNumber)) {
 | 
						|
        context.annotateRange(0, line.text.length, annotationStyle, 'right');
 | 
						|
        context.annotateLineNumber(annotationStyle, 'right');
 | 
						|
      }
 | 
						|
    }
 | 
						|
  }).enableToggleCheckbox('Display Coverage', checkbox => {
 | 
						|
    // Checkbox is attached so now add the notifier that will be controlled
 | 
						|
    // by the checkbox.
 | 
						|
    // Checkbox will only be added to the file diff page, in the top right
 | 
						|
    // section near the "Diff view".
 | 
						|
    annotationApi.addNotifier(notifyFunc => {
 | 
						|
      populateWithDummyData(coverageData);
 | 
						|
      checkbox.disabled = false;
 | 
						|
      checkbox.onclick = e => {
 | 
						|
        displayCoverage = e.target.checked;
 | 
						|
        Object.keys(coverageData).forEach(file => {
 | 
						|
          notifyFunc(file, 0, coverageData[file].totalLines, 'right');
 | 
						|
        });
 | 
						|
      };
 | 
						|
    });
 | 
						|
  });
 | 
						|
}); |