Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

UWP: allow servo's initial URL to be set before Servo starts #27177

Merged
merged 1 commit into from Jul 6, 2020
Merged
Changes from all commits
Commits
File filter...
Filter file types
Jump to…
Jump to file
Failed to load files.

Always

Just for now

UWP: allow servo's initial URL to be set before Servo starts

  • Loading branch information
paulrouget committed Jul 6, 2020
commit 79ecc7e216c2fee9e9b9ac99a04830509f55ddb9
@@ -4,5 +4,5 @@

// For development purpose.
// Will override DEFAULT_URL_PROD or any locally stored preferences.
// #define OVERRIDE_DEFAULT_URL "data:text/html,<input>"
// #define OVERRIDE_DEFAULT_URL "http://localhost:8000/test.html"
// #define OVERRIDE_DEFAULT_URL L"data:text/html,<input>"
// #define OVERRIDE_DEFAULT_URL L"http://localhost:8000/test.html"
@@ -134,8 +134,8 @@ const char *prompt_input(const char *message, const char *default,
}
}

Servo::Servo(hstring args, GLsizei width, GLsizei height,
EGLNativeWindowType eglNativeWindow, float dpi,
Servo::Servo(std::optional<hstring> initUrl, hstring args, GLsizei width,
GLsizei height, EGLNativeWindowType eglNativeWindow, float dpi,
ServoDelegate &aDelegate)
: mWindowHeight(height), mWindowWidth(width), mDelegate(aDelegate) {
ApplicationDataContainer localSettings =
@@ -172,13 +172,22 @@ Servo::Servo(hstring args, GLsizei width, GLsizei height,
auto val = unbox_value<bool>(value);
cpref.value = &val;
} else if (type == Windows::Foundation::PropertyType::String) {
cpref.pref_type = capi::CPrefType::Str;
cpref.value = *hstring2char(unbox_value<hstring>(value));
#ifdef OVERRIDE_DEFAULT_URL
hstring strValue;
if (pref.Key() == L"shell.homepage") {
cpref.value = OVERRIDE_DEFAULT_URL;
}
if (initUrl.has_value()) {
strValue = *initUrl;
} else {
#ifdef OVERRIDE_DEFAULT_URL
strValue = OVERRIDE_DEFAULT_URL;
#else
strValue = unbox_value<hstring>(value);
#endif
}
} else {
strValue = unbox_value<hstring>(value);
}
cpref.pref_type = capi::CPrefType::Str;
cpref.value = *hstring2char(strValue);
} else if (type == Windows::Foundation::PropertyType::Int64) {
cpref.pref_type = capi::CPrefType::Int;
auto val = unbox_value<int64_t>(value);
@@ -200,7 +209,7 @@ Servo::Servo(hstring args, GLsizei width, GLsizei height,

capi::CInitOptions o;
o.prefs = &prefsList;
o.args = *hstring2char(args + L"--devtools");
o.args = *hstring2char(args + L" --devtools");
o.width = mWindowWidth;
o.height = mWindowHeight;
o.density = dpi;
@@ -26,7 +26,8 @@ class ServoDelegate;

class Servo {
public:
Servo(hstring, GLsizei, GLsizei, EGLNativeWindowType, float, ServoDelegate &);
Servo(std::optional<hstring>, hstring, GLsizei, GLsizei, EGLNativeWindowType,
float, ServoDelegate &);
~Servo();
ServoDelegate &Delegate() { return mDelegate; }

@@ -379,6 +379,8 @@ void ServoControl::TryLoadUri(hstring input) {
});
}
});
} else {
mInitUrl = input;
}
}

@@ -398,8 +400,8 @@ void ServoControl::Loop() {
log(L"Entering loop");
ServoDelegate *sd = static_cast<ServoDelegate *>(this);
EGLNativeWindowType win = GetNativeWindow();
mServo = std::make_unique<Servo>(mArgs, mPanelWidth, mPanelHeight, win,
mDPI, *sd);
mServo = std::make_unique<Servo>(mInitUrl, mArgs, mPanelWidth, mPanelHeight,
win, mDPI, *sd);
} else {
// FIXME: this will fail since create_task didn't pick the thread
// where Servo was running initially.
@@ -217,6 +217,7 @@ struct ServoControl : ServoControlT<ServoControl>, public servo::ServoDelegate {
float mDPI = 1;
hstring mCurrentUrl = L"";
bool mTransient = false;
std::optional<hstring> mInitUrl = {};

Windows::UI::Xaml::Controls::SwapChainPanel ServoControl::Panel();
void CreateNativeWindow();
ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.