| Index: chrome/common/extensions/docs/examples/api/fontSettings/popup.js
|
| diff --git a/chrome/common/extensions/docs/examples/api/fontSettings/popup.js b/chrome/common/extensions/docs/examples/api/fontSettings/popup.js
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..f3e05717c083d0e23f49ab087ea3a713cb9fb8bf
|
| --- /dev/null
|
| +++ b/chrome/common/extensions/docs/examples/api/fontSettings/popup.js
|
| @@ -0,0 +1,118 @@
|
| +// Copyright (c) 2012 The Chromium Authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +var scriptList;
|
| +
|
| +// Mapping between font list ids and the generic family setting they
|
| +// represent.
|
| +var genericFamilies = [
|
| + { fontList: 'standardFontList', name: 'standard' },
|
| + { fontList: 'serifFontList', name: 'serif' },
|
| + { fontList: 'sansSerifFontList', name: 'sansserif' },
|
| + { fontList: 'fixedFontList', name: 'fixed' }
|
| +];
|
| +
|
| +function getSelectedScript() {
|
| + return scriptList.options[scriptList.selectedIndex].value;
|
| +}
|
| +
|
| +function getSelectedFont(fontList) {
|
| + return fontList.options[fontList.selectedIndex].value;
|
| +}
|
| +
|
| +// Populates the font lists with the list of system fonts from |fonts|.
|
| +function populateLists(fonts) {
|
| + for (var i = 0; i < genericFamilies.length; i++) {
|
| + var list = document.getElementById(genericFamilies[i].fontList);
|
| +
|
| + // Add special "(none)" item to indicate fallback to the non-per-script
|
| + // font setting. The Font Settings API uses the empty string to indicate
|
| + // fallback.
|
| + var noneItem = document.createElement('option');
|
| + noneItem.value = '';
|
| + noneItem.text = '(none)';
|
| + list.add(noneItem);
|
| +
|
| + for (var j = 0; j < fonts.length; j++) {
|
| + var item = document.createElement('option');
|
| + item.value = fonts[j].fontName;
|
| + item.text = fonts[j].localizedName;
|
| + list.add(item);
|
| + }
|
| + }
|
| +
|
| + updateListSelections();
|
| +}
|
| +
|
| +// Returns a function that updates the font setting for |genericFamily|
|
| +// to match the selected value in |fontList|. It can be used as an event
|
| +// handler for selection changes in |fontList|.
|
| +function getFontChangeHandler(fontList, genericFamily) {
|
| + return function() {
|
| + var script = getSelectedScript();
|
| + var font = getSelectedFont(fontList);
|
| +
|
| + chrome.experimental.fontSettings.setFontName({
|
| + script: script,
|
| + genericFamily: genericFamily,
|
| + fontName: font
|
| + });
|
| + };
|
| +}
|
| +
|
| +// Sets the selected value of |fontList| to |fontName|.
|
| +function setSelectedFont(fontList, fontName) {
|
| + var script = getSelectedScript();
|
| +
|
| + for (var i = 0; i < fontList.length; i++) {
|
| + if (fontName == fontList.options[i].value) {
|
| + fontList.selectedIndex = i;
|
| + break;
|
| + }
|
| + }
|
| + if (i == fontList.length) {
|
| + console.warn("font '" + fontName + "' for " + fontList.id + ' for ' +
|
| + script + ' is not on the system');
|
| + }
|
| +}
|
| +
|
| +// Returns a callback function that sets the selected value of |list| to the
|
| +// font returned from |chrome.experimental.fontSettings.getFontName|.
|
| +function getFontNameHandler(list) {
|
| + return function(details) {
|
| + setSelectedFont(list, details.fontName);
|
| + };
|
| +}
|
| +
|
| +// Sets the selected value of each font list to the current font setting.
|
| +function updateListSelections() {
|
| + var script = getSelectedScript();
|
| +
|
| + for (var i = 0; i < genericFamilies.length; i++) {
|
| + var list = document.getElementById(genericFamilies[i].fontList);
|
| + var family = genericFamilies[i].name;
|
| +
|
| + chrome.experimental.fontSettings.getFontName({
|
| + genericFamily: family,
|
| + script: script
|
| + }, getFontNameHandler(list));
|
| + }
|
| +}
|
| +
|
| +function init() {
|
| + scriptList = document.getElementById('scriptList');
|
| + scriptList.addEventListener('change', updateListSelections);
|
| +
|
| + // Populate the font lists.
|
| + chrome.experimental.fontSettings.getFontList(populateLists);
|
| +
|
| + // Add change handlers to the font lists.
|
| + for (var i = 0; i < genericFamilies.length; i++) {
|
| + var list = document.getElementById(genericFamilies[i].fontList);
|
| + var handler = getFontChangeHandler(list, genericFamilies[i].name);
|
| + list.addEventListener('change', handler);
|
| + }
|
| +}
|
| +
|
| +document.addEventListener('DOMContentLoaded', init);
|
|
|