blob: 8f028525d57a82aed368fcb0e175e32a8c4b51fc [file] [log] [blame]
/*
* Copyright (C) 2012 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.
*/
package com.android.webview.chromium;
import android.content.Context;
import android.content.res.Resources;
import android.os.Build;
import org.chromium.android_webview.AwResource;
import java.lang.reflect.Field;
public class ResourceProvider {
private static boolean sInitialized;
static void registerResources(Context context) {
if (sInitialized) {
return;
}
AwResource.setResources(context.getResources());
// attr
org.chromium.content.R.attr.select_dialog_multichoice =
com.android.internal.R.attr.webviewchromium_select_dialog_multichoice;
org.chromium.content.R.attr.select_dialog_singlechoice =
com.android.internal.R.attr.webviewchromium_select_dialog_singlechoice;
// color
org.chromium.ui.R.color.dropdown_dark_divider_color =
com.android.internal.R.color.webviewchromium_dropdown_dark_divider_color;
org.chromium.ui.R.color.dropdown_divider_color =
com.android.internal.R.color.webviewchromium_dropdown_divider_color;
org.chromium.ui.R.color.color_picker_border_color =
com.android.internal.R.color.webviewchromium_color_picker_border_color;
// dimen
org.chromium.content.R.dimen.link_preview_overlay_radius =
com.android.internal.R.dimen.webviewchromium_link_preview_overlay_radius;
org.chromium.ui.R.dimen.dropdown_item_height =
com.android.internal.R.dimen.webviewchromium_dropdown_text_height;
org.chromium.ui.R.dimen.dropdown_item_divider_height =
com.android.internal.R.dimen.webviewchromium_dropdown_text_divider_height;
org.chromium.ui.R.dimen.color_button_height =
com.android.internal.R.dimen.webviewchromium_color_button_height;
org.chromium.ui.R.dimen.config_min_scaling_span =
com.android.internal.R.dimen.webviewchromium_config_min_scaling_span;
org.chromium.ui.R.dimen.config_min_scaling_touch_major =
com.android.internal.R.dimen.webviewchromium_config_min_scaling_touch_major;
// drawable
org.chromium.content.R.drawable.ondemand_overlay =
com.android.internal.R.drawable.webviewchromium_ondemand_overlay;
org.chromium.ui.R.drawable.color_button_background =
com.android.internal.R.drawable.webviewchromium_color_button_background;
org.chromium.ui.R.drawable.color_picker_advanced_select_handle =
com.android.internal.R.drawable.webviewchromium_color_picker_advanced_select_handle;
// id
org.chromium.content.R.id.ampm = com.android.internal.R.id.webviewchromium_ampm;
org.chromium.content.R.id.date_picker =
com.android.internal.R.id.webviewchromium_date_picker;
org.chromium.content.R.id.date_time_suggestion_value =
com.android.internal.R.id.webviewchromium_date_time_suggestion_value;
org.chromium.content.R.id.date_time_suggestion_label =
com.android.internal.R.id.webviewchromium_date_time_suggestion_label;
org.chromium.content.R.id.hour = com.android.internal.R.id.webviewchromium_hour;
org.chromium.content.R.id.milli = com.android.internal.R.id.webviewchromium_milli;
org.chromium.content.R.id.minute = com.android.internal.R.id.webviewchromium_minute;
org.chromium.content.R.id.pickers = com.android.internal.R.id.webviewchromium_pickers;
org.chromium.content.R.id.position_in_year =
com.android.internal.R.id.webviewchromium_position_in_year;
org.chromium.content.R.id.second = com.android.internal.R.id.webviewchromium_second;
org.chromium.content.R.id.second_colon =
com.android.internal.R.id.webviewchromium_second_colon;
org.chromium.content.R.id.second_dot =
com.android.internal.R.id.webviewchromium_second_dot;
org.chromium.content.R.id.select_action_menu_select_all =
com.android.internal.R.id.webviewchromium_select_action_menu_select_all;
org.chromium.content.R.id.select_action_menu_cut =
com.android.internal.R.id.webviewchromium_select_action_menu_cut;
org.chromium.content.R.id.select_action_menu_copy =
com.android.internal.R.id.webviewchromium_select_action_menu_copy;
org.chromium.content.R.id.select_action_menu_paste =
com.android.internal.R.id.webviewchromium_select_action_menu_paste;
org.chromium.content.R.id.select_action_menu_share =
com.android.internal.R.id.webviewchromium_select_action_menu_share;
org.chromium.content.R.id.select_action_menu_web_search =
com.android.internal.R.id.webviewchromium_select_action_menu_web_search;
org.chromium.content.R.id.time_picker =
com.android.internal.R.id.webviewchromium_time_picker;
org.chromium.content.R.id.year = com.android.internal.R.id.webviewchromium_year;
org.chromium.content.R.id.main_text =
com.android.internal.R.id.webviewchromium_validation_bubble_main_text;
org.chromium.content.R.id.sub_text =
com.android.internal.R.id.webviewchromium_validation_bubble_sub_text;
org.chromium.content.R.id.arrow_image =
com.android.internal.R.id.webviewchromium_validation_bubble_arrow_image;
org.chromium.ui.R.id.selected_color_view =
com.android.internal.R.id.webviewchromium_color_picker_selected_color_view;
org.chromium.ui.R.id.title =
com.android.internal.R.id.webviewchromium_color_picker_title;
org.chromium.ui.R.id.more_colors_button =
com.android.internal.R.id.webviewchromium_color_picker_more_colors_button;
org.chromium.ui.R.id.color_picker_advanced =
com.android.internal.R.id.webviewchromium_color_picker_advanced;
org.chromium.ui.R.id.color_picker_simple =
com.android.internal.R.id.webviewchromium_color_picker_simple;
org.chromium.ui.R.id.color_button_swatch =
com.android.internal.R.id.webviewchromium_color_button_swatch;
org.chromium.ui.R.id.more_colors_button_border =
com.android.internal.R.id.webviewchromium_color_picker_more_colors_button_border;
org.chromium.ui.R.id.gradient =
com.android.internal.R.id.webviewchromium_color_picker_gradient;
org.chromium.ui.R.id.text =
com.android.internal.R.id.webviewchromium_color_picker_text;
org.chromium.ui.R.id.seek_bar =
com.android.internal.R.id.webviewchromium_color_picker_seek_bar;
org.chromium.ui.R.id.dropdown_label =
com.android.internal.R.id.webviewchromium_dropdown_label;
org.chromium.ui.R.id.dropdown_popup_window =
com.android.internal.R.id.webviewchromium_dropdown_popup_window;
org.chromium.ui.R.id.dropdown_sublabel =
com.android.internal.R.id.webviewchromium_dropdown_sublabel;
// layout
org.chromium.content.R.layout.date_time_picker_dialog =
com.android.internal.R.layout.webviewchromium_date_time_picker_dialog;
org.chromium.content.R.layout.date_time_suggestion =
com.android.internal.R.layout.webviewchromium_date_time_suggestion;
org.chromium.content.R.layout.two_field_date_picker =
com.android.internal.R.layout.webviewchromium_two_field_date_picker;
org.chromium.content.R.layout.multi_field_time_picker_dialog =
com.android.internal.R.layout.webviewchromium_multi_field_time_picker_dialog;
org.chromium.content.R.layout.validation_message_bubble =
com.android.internal.R.layout.webviewchromium_validation_message_bubble;
org.chromium.ui.R.layout.color_picker_dialog_title =
com.android.internal.R.layout.webviewchromium_color_picker_dialog_title;
org.chromium.ui.R.layout.color_picker_dialog_content =
com.android.internal.R.layout.webviewchromium_color_picker_dialog_content;
org.chromium.ui.R.layout.color_picker_advanced_component =
com.android.internal.R.layout.webviewchromium_color_picker_advanced_component;
org.chromium.ui.R.layout.dropdown_item =
com.android.internal.R.layout.webviewchromium_dropdown_text;
// menu
org.chromium.content.R.menu.select_action_menu =
com.android.internal.R.menu.webviewchromium_select_action_menu;
// string
org.chromium.content.R.string.accessibility_content_view =
com.android.internal.R.string.webviewchromium_accessibility_content_view;
org.chromium.content.R.string.accessibility_date_picker_month =
com.android.internal.R.string.webviewchromium_accessibility_date_picker_month;
org.chromium.content.R.string.accessibility_date_picker_week =
com.android.internal.R.string.webviewchromium_accessibility_date_picker_week;
org.chromium.content.R.string.accessibility_date_picker_year =
com.android.internal.R.string.webviewchromium_accessibility_date_picker_year;
org.chromium.content.R.string.accessibility_datetime_picker_date =
com.android.internal.R.string.webviewchromium_accessibility_datetime_picker_date;
org.chromium.content.R.string.accessibility_datetime_picker_time =
com.android.internal.R.string.webviewchromium_accessibility_datetime_picker_time;
org.chromium.content.R.string.actionbar_share =
com.android.internal.R.string.share;
org.chromium.content.R.string.actionbar_web_search =
com.android.internal.R.string.websearch;
org.chromium.content.R.string.date_picker_dialog_clear =
com.android.internal.R.string.webviewchromium_date_picker_dialog_clear;
org.chromium.content.R.string.date_picker_dialog_set =
com.android.internal.R.string.webviewchromium_date_picker_dialog_set;
org.chromium.content.R.string.date_picker_dialog_title =
com.android.internal.R.string.webviewchromium_date_picker_dialog_title;
org.chromium.content.R.string.date_picker_dialog_other_button_label =
com.android.internal.R.string.webviewchromium_date_picker_dialog_other_button_label;
org.chromium.content.R.string.date_time_picker_dialog_title =
com.android.internal.R.string.webviewchromium_date_time_picker_dialog_title;
org.chromium.content.R.string.media_player_error_button =
com.android.internal.R.string.webviewchromium_media_player_error_button;
org.chromium.content.R.string.media_player_error_text_invalid_progressive_playback =
com.android.internal.R.string.webviewchromium_media_player_error_text_invalid_progressive_playback;
org.chromium.content.R.string.media_player_error_text_unknown =
com.android.internal.R.string.webviewchromium_media_player_error_text_unknown;
org.chromium.content.R.string.media_player_error_title =
com.android.internal.R.string.webviewchromium_media_player_error_title;
org.chromium.content.R.string.media_player_loading_video =
com.android.internal.R.string.webviewchromium_media_player_loading_video;
org.chromium.content.R.string.month_picker_dialog_title =
com.android.internal.R.string.webviewchromium_month_picker_dialog_title;
org.chromium.content.R.string.profiler_error_toast =
com.android.internal.R.string.webviewchromium_profiler_error_toast;
org.chromium.content.R.string.profiler_no_storage_toast =
com.android.internal.R.string.webviewchromium_profiler_no_storage_toast;
org.chromium.content.R.string.profiler_started_toast =
com.android.internal.R.string.webviewchromium_profiler_started_toast;
org.chromium.content.R.string.profiler_stopped_toast =
com.android.internal.R.string.webviewchromium_profiler_stopped_toast;
org.chromium.content.R.string.time_picker_dialog_am =
com.android.internal.R.string.webviewchromium_time_picker_dialog_am;
org.chromium.content.R.string.time_picker_dialog_pm =
com.android.internal.R.string.webviewchromium_time_picker_dialog_pm;
org.chromium.content.R.string.time_picker_dialog_title =
com.android.internal.R.string.webviewchromium_time_picker_dialog_title;
org.chromium.content.R.string.week_picker_dialog_title =
com.android.internal.R.string.webviewchromium_week_picker_dialog_title;
org.chromium.ui.R.string.copy_to_clipboard_failure_message =
com.android.internal.R.string.webviewchromium_copy_to_clipboard_failure_message;
org.chromium.ui.R.string.low_memory_error =
com.android.internal.R.string.webviewchromium_low_memory_error;
org.chromium.ui.R.string.opening_file_error =
com.android.internal.R.string.webviewchromium_opening_file_error;
org.chromium.ui.R.string.color_picker_button_more =
com.android.internal.R.string.webviewchromium_color_picker_button_more;
org.chromium.ui.R.string.color_picker_hue =
com.android.internal.R.string.webviewchromium_color_picker_hue;
org.chromium.ui.R.string.color_picker_saturation =
com.android.internal.R.string.webviewchromium_color_picker_saturation;
org.chromium.ui.R.string.color_picker_value =
com.android.internal.R.string.webviewchromium_color_picker_value;
org.chromium.ui.R.string.color_picker_button_set =
com.android.internal.R.string.webviewchromium_color_picker_button_set;
org.chromium.ui.R.string.color_picker_button_cancel =
com.android.internal.R.string.webviewchromium_color_picker_button_cancel;
org.chromium.ui.R.string.color_picker_dialog_title =
com.android.internal.R.string.webviewchromium_color_picker_dialog_title;
org.chromium.ui.R.string.color_picker_button_red =
com.android.internal.R.string.webviewchromium_color_picker_button_red;
org.chromium.ui.R.string.color_picker_button_cyan =
com.android.internal.R.string.webviewchromium_color_picker_button_cyan;
org.chromium.ui.R.string.color_picker_button_blue =
com.android.internal.R.string.webviewchromium_color_picker_button_blue;
org.chromium.ui.R.string.color_picker_button_green =
com.android.internal.R.string.webviewchromium_color_picker_button_green;
org.chromium.ui.R.string.color_picker_button_magenta =
com.android.internal.R.string.webviewchromium_color_picker_button_magenta;
org.chromium.ui.R.string.color_picker_button_yellow =
com.android.internal.R.string.webviewchromium_color_picker_button_yellow;
org.chromium.ui.R.string.color_picker_button_black =
com.android.internal.R.string.webviewchromium_color_picker_button_black;
org.chromium.ui.R.string.color_picker_button_white =
com.android.internal.R.string.webviewchromium_color_picker_button_white;
// style
org.chromium.content.R.style.SelectPopupDialog =
com.android.internal.R.style.webviewchromium_SelectPopupDialog;
org.chromium.ui.R.style.DropdownPopupWindow =
com.android.internal.R.style.webviewchromium_DropdownPopupWindow;
if (Build.IS_DEBUGGABLE) {
// Ensure that we aren't missing any resource mappings.
verifyFields(org.chromium.content.R.class);
verifyFields(org.chromium.ui.R.class);
}
// Resources needed by android_webview/
AwResource.setErrorPageResources(
com.android.internal.R.raw.loaderror,
com.android.internal.R.raw.nodomain);
AwResource.setDefaultTextEncoding(
com.android.internal.R.string.default_text_encoding);
AwResource.setConfigKeySystemUuidMapping(
com.android.internal.R.array.config_keySystemUuidMapping);
sInitialized = true;
}
// Verify that all the fields of the inner classes of |R| have a valid mapping.
// This ensures that if a resource is added upstream, we won't miss providing
// a mapping downstream.
private static void verifyFields(Class<?> R) {
for (Class<?> c : R.getDeclaredClasses()) {
verifyFields(c); // recursively check inner classes.
}
for (Field f : R.getDeclaredFields()) {
try {
if (f.getInt(null) == 0) {
throw new RuntimeException("Missing resource mapping for " +
R.getName() + "." + f.getName());
}
} catch (IllegalAccessException e) { }
}
}
}