callback.Run(gfx::Image::CreateFrom1xBitmap(bitmap));
}
-// Converts min-width to minWidth, returns false if no conversion is needed.
-bool TranslateOldKey(const std::string& key, std::string* new_key) {
- if (key.find('-') == std::string::npos)
- return false;
- new_key->reserve(key.size());
- bool next_upper_case = false;
- for (char c : key) {
- if (c == '-') {
- next_upper_case = true;
- } else if (next_upper_case) {
- new_key->push_back(base::ToUpperASCII(c));
- next_upper_case = false;
- } else {
- new_key->push_back(c);
- }
- }
- return true;
-}
-
-// Converts min-width to minWidth recursively in the dictionary.
-void TranslateOldOptions(v8::Isolate* isolate, v8::Local<v8::Object> options) {
- auto context = isolate->GetCurrentContext();
- auto maybe_keys = options->GetOwnPropertyNames(context);
- if (maybe_keys.IsEmpty())
- return;
- std::vector<std::string> keys;
- if (!mate::ConvertFromV8(isolate, maybe_keys.ToLocalChecked(), &keys))
- return;
- mate::Dictionary dict(isolate, options);
- for (const auto& key : keys) {
- v8::Local<v8::Value> value;
- if (!dict.Get(key, &value)) // Shouldn't happen, but guard it anyway.
- continue;
- // Go recursively.
- v8::Local<v8::Object> sub_options;
- if (mate::ConvertFromV8(isolate, value, &sub_options))
- TranslateOldOptions(isolate, sub_options);
- // Translate key.
- std::string new_key;
- if (TranslateOldKey(key, &new_key)) {
- dict.Set(new_key, value);
- dict.Delete(key);
- }
- }
-}
-
// Converts binary data to Buffer.
v8::Local<v8::Value> ToBuffer(v8::Isolate* isolate, void* val, int size) {
auto buffer = node::Buffer::Copy(isolate, static_cast<char*>(val), size);
Window::Window(v8::Isolate* isolate, const mate::Dictionary& options) {
- // Be compatible with old style field names like min-width.
- TranslateOldOptions(isolate, options.GetHandle());
-
// Use options.webPreferences to create WebContents.
mate::Dictionary web_preferences = mate::Dictionary::CreateEmpty(isolate);
options.Get(options::kWebPreferences, &web_preferences);