1c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Copyright 2013 The Chromium Authors. All rights reserved. 2c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)// found in the LICENSE file. 4c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 5c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 6c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)/** 7c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * @fileoverview Helpers for validating parameters to chrome-search:// iframes. 8c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 9c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 10c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) 11c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)/** 12c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * Converts an RGB color number to a hex color string if valid. 13c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * @param {number} color A 6-digit hex RGB color code as a number. 14c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) * @return {?string} A CSS representation of the color or null if invalid. 15c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) */ 167dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochfunction convertToHexColor(color) { 17c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Color must be a number, finite, with no fractional part, in the correct 18c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // range for an RGB hex color. 19c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) if (isFinite(color) && Math.floor(color) == color && 20c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) color >= 0 && color <= 0xffffff) { 21c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) var hexColor = color.toString(16); 22c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) // Pads with initial zeros and # (e.g. for 'ff' yields '#0000ff'). 23c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return '#000000'.substr(0, 7 - hexColor.length) + hexColor; 24c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) } 25c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles) return null; 26c2e0dbddbe15c98d52c4786dac06cb8952a8ae6dTorne (Richard Coles)} 277dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 287dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 297dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch/** 307dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch * Validates a RGBA color component. It must be a number between 0 and 255. 317dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch * @param {number} component An RGBA component. 327dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch * @return {boolean} True if the component is valid. 337dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch */ 347dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochfunction isValidRBGAComponent(component) { 357dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch return isFinite(component) && component >= 0 && component <= 255; 367dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 377dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 387dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch 397dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch/** 407dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch * Converts an Array of color components into RGBA format "rgba(R,G,B,A)". 417dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch * @param {Array.<number>} rgbaColor Array of rgba color components. 427dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch * @return {?string} CSS color in RGBA format or null if invalid. 437dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch */ 447dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdochfunction convertArrayToRGBAColor(rgbaColor) { 457dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch // Array must contain 4 valid components. 467dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch if (rgbaColor instanceof Array && rgbaColor.length === 4 && 477dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch isValidRBGAComponent(rgbaColor[0]) && 487dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch isValidRBGAComponent(rgbaColor[1]) && 497dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch isValidRBGAComponent(rgbaColor[2]) && 507dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch isValidRBGAComponent(rgbaColor[3])) { 517dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch return 'rgba(' + 527dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch rgbaColor[0] + ',' + 537dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch rgbaColor[1] + ',' + 547dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch rgbaColor[2] + ',' + 557dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch rgbaColor[3] / 255 + ')'; 567dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch } 577dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch return null; 587dbb3d5cf0c15f500944d211057644d6a2f37371Ben Murdoch} 59