Index: webkit/glue/webkitclient_impl.cc |
diff --git a/webkit/glue/webkitclient_impl.cc b/webkit/glue/webkitclient_impl.cc |
index affbf7ea4c9c8c0780edfe850ace828bb787fe65..ab85a80c22c0c3b8573ec6bacdac579c0ced5801 100644 |
--- a/webkit/glue/webkitclient_impl.cc |
+++ b/webkit/glue/webkitclient_impl.cc |
@@ -346,56 +346,62 @@ WebData loadAudioSpatializationResource(const char* name) { |
return WebData(); |
} |
+struct DataResource { |
+ const char* name; |
+ int id; |
+}; |
+ |
+const DataResource kDataResources[] = { |
+ { "missingImage", IDR_BROKENIMAGE }, |
+ { "mediaPause", IDR_MEDIA_PAUSE_BUTTON }, |
+ { "mediaPlay", IDR_MEDIA_PLAY_BUTTON }, |
+ { "mediaPlayDisabled", IDR_MEDIA_PLAY_BUTTON_DISABLED }, |
+ { "mediaSoundDisabled", IDR_MEDIA_SOUND_DISABLED }, |
+ { "mediaSoundFull", IDR_MEDIA_SOUND_FULL_BUTTON }, |
+ { "mediaSoundNone", IDR_MEDIA_SOUND_NONE_BUTTON }, |
+ { "mediaSliderThumb", IDR_MEDIA_SLIDER_THUMB }, |
+ { "mediaVolumeSliderThumb", IDR_MEDIA_VOLUME_SLIDER_THUMB }, |
+ { "panIcon", IDR_PAN_SCROLL_ICON }, |
+ { "searchCancel", IDR_SEARCH_CANCEL }, |
+ { "searchCancelPressed", IDR_SEARCH_CANCEL_PRESSED }, |
+ { "searchMagnifier", IDR_SEARCH_MAGNIFIER }, |
+ { "searchMagnifierResults", IDR_SEARCH_MAGNIFIER_RESULTS }, |
+ { "textAreaResizeCorner", IDR_TEXTAREA_RESIZER }, |
+ { "tickmarkDash", IDR_TICKMARK_DASH }, |
+ { "inputSpeech", IDR_INPUT_SPEECH }, |
+ { "inputSpeechRecording", IDR_INPUT_SPEECH_RECORDING }, |
+ { "inputSpeechWaiting", IDR_INPUT_SPEECH_WAITING }, |
+ { "americanExpressCC", IDR_AUTOFILL_CC_AMEX }, |
+ { "dinersCC", IDR_AUTOFILL_CC_DINERS }, |
+ { "discoverCC", IDR_AUTOFILL_CC_DISCOVER }, |
+ { "genericCC", IDR_AUTOFILL_CC_GENERIC }, |
+ { "jcbCC", IDR_AUTOFILL_CC_JCB }, |
+ { "masterCardCC", IDR_AUTOFILL_CC_MASTERCARD }, |
+ { "soloCC", IDR_AUTOFILL_CC_SOLO }, |
+ { "visaCC", IDR_AUTOFILL_CC_VISA }, |
+}; |
+ |
} // namespace |
WebData WebKitClientImpl::loadResource(const char* name) { |
- struct { |
- const char* name; |
- int id; |
- } resources[] = { |
- { "missingImage", IDR_BROKENIMAGE }, |
- { "mediaPause", IDR_MEDIA_PAUSE_BUTTON }, |
- { "mediaPlay", IDR_MEDIA_PLAY_BUTTON }, |
- { "mediaPlayDisabled", IDR_MEDIA_PLAY_BUTTON_DISABLED }, |
- { "mediaSoundDisabled", IDR_MEDIA_SOUND_DISABLED }, |
- { "mediaSoundFull", IDR_MEDIA_SOUND_FULL_BUTTON }, |
- { "mediaSoundNone", IDR_MEDIA_SOUND_NONE_BUTTON }, |
- { "mediaSliderThumb", IDR_MEDIA_SLIDER_THUMB }, |
- { "mediaVolumeSliderThumb", IDR_MEDIA_VOLUME_SLIDER_THUMB }, |
- { "panIcon", IDR_PAN_SCROLL_ICON }, |
- { "searchCancel", IDR_SEARCH_CANCEL }, |
- { "searchCancelPressed", IDR_SEARCH_CANCEL_PRESSED }, |
- { "searchMagnifier", IDR_SEARCH_MAGNIFIER }, |
- { "searchMagnifierResults", IDR_SEARCH_MAGNIFIER_RESULTS }, |
- { "textAreaResizeCorner", IDR_TEXTAREA_RESIZER }, |
- { "tickmarkDash", IDR_TICKMARK_DASH }, |
- { "inputSpeech", IDR_INPUT_SPEECH }, |
- { "inputSpeechRecording", IDR_INPUT_SPEECH_RECORDING }, |
- { "inputSpeechWaiting", IDR_INPUT_SPEECH_WAITING }, |
- { "americanExpressCC", IDR_AUTOFILL_CC_AMEX }, |
- { "dinersCC", IDR_AUTOFILL_CC_DINERS }, |
- { "discoverCC", IDR_AUTOFILL_CC_DISCOVER }, |
- { "genericCC", IDR_AUTOFILL_CC_GENERIC }, |
- { "jcbCC", IDR_AUTOFILL_CC_JCB }, |
- { "masterCardCC", IDR_AUTOFILL_CC_MASTERCARD }, |
- { "soloCC", IDR_AUTOFILL_CC_SOLO }, |
- { "visaCC", IDR_AUTOFILL_CC_VISA }, |
- }; |
+ // Some clients will call into this method with an empty |name| when they have |
+ // optional resources. For example, the PopupMenuChromium code can have icons |
+ // for some Autofill items but not for others. |
+ if (!strlen(name)) |
+ return WebData(); |
// Check the name prefix to see if it's an audio resource. |
- if (StartsWithASCII(name, "IRC_Composite", true)) { |
+ if (StartsWithASCII(name, "IRC_Composite", true)) |
return loadAudioSpatializationResource(name); |
- } else { |
- for (size_t i = 0; i < ARRAYSIZE_UNSAFE(resources); ++i) { |
- if (!strcmp(name, resources[i].name)) { |
- base::StringPiece resource = GetDataResource(resources[i].id); |
- return WebData(resource.data(), resource.size()); |
- } |
+ |
+ for (size_t i = 0; i < arraysize(kDataResources); ++i) { |
+ if (!strcmp(name, kDataResources[i].name)) { |
+ base::StringPiece resource = GetDataResource(kDataResources[i].id); |
+ return WebData(resource.data(), resource.size()); |
} |
} |
- // TODO(jhawkins): Restore this NOTREACHED once WK stops sending in empty |
- // strings. http://crbug.com/50675. |
- //NOTREACHED() << "Unknown image resource " << name; |
+ |
+ NOTREACHED() << "Unknown image resource " << name; |
return WebData(); |
} |