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 L10N #26840

Merged
merged 3 commits into from Jun 11, 2020
Merged

UWP L10N #26840

Changes from 1 commit
Commits
File filter...
Filter file types
Jump to…
Jump to file
Failed to load files.

Always

Just for now

Next

log and format for wstrings.

  • Loading branch information
paulrouget committed Jun 11, 2020
commit 805b79b32ca009d7c8afc45a02e155d3f925d86c
@@ -3,7 +3,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */

#include "pch.h"
#include "logs.h"
#include "strutils.h"
#include "BrowserPage.h"
#include "BrowserPage.g.cpp"
#include "DefaultUrl.h"
@@ -103,7 +103,7 @@ void BrowserPage::LoadServoURI(Uri uri) {
auto scheme = uri.SchemeName();

if (scheme != SERVO_SCHEME) {
log("Unexpected URL: ", uri.RawUri().c_str());
log(L"Unexpected URL: ", uri.RawUri().c_str());
return;
}
std::wstring raw{uri.RawUri()};
@@ -119,7 +119,7 @@
</Link>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="logs.h" />
<ClInclude Include="strutils.h" />
<ClInclude Include="pch.h" />
<ClInclude Include="App.h">
<DependentUpon>App.xaml</DependentUpon>
@@ -923,7 +923,6 @@
<DependentUpon>BrowserPage.xaml</DependentUpon>
</ClCompile>
<ClCompile Include="$(GeneratedFilesDir)module.g.cpp" />
<ClCompile Include="logs.cpp" />
<ClCompile Include="ServoControl\OpenGLES.cpp" />
<ClCompile Include="ServoControl\Servo.cpp" />
<ClCompile Include="ServoControl\ServoControl.cpp" />
@@ -10,7 +10,6 @@
<ItemGroup>
<ClCompile Include="pch.cpp" />
<ClCompile Include="$(GeneratedFilesDir)module.g.cpp" />
<ClCompile Include="logs.cpp" />
<ClCompile Include="BrowserPage.cpp" />
<ClCompile Include="App.cpp" />
<ClCompile Include="ServoControl\OpenGLES.cpp">
@@ -25,7 +24,6 @@
</ItemGroup>
<ItemGroup>
<ClInclude Include="pch.h" />
<ClInclude Include="logs.h" />
<ClInclude Include="BrowserPage.h" />
<ClInclude Include="App.h" />
<ClInclude Include="ServoControl\OpenGLES.h">
@@ -38,6 +36,7 @@
<Filter>ServoControl</Filter>
</ClInclude>
<ClInclude Include="DefaultUrl.h" />
<ClInclude Include="strutils.h" />
</ItemGroup>
<ItemGroup>
<Image Include="Assets\Wide310x150Logo.scale-200.png">
@@ -3,7 +3,7 @@
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */

#include "pch.h"
#include "logs.h"
#include "strutils.h"
#include "OpenGLES.h"

using namespace winrt::Windows::UI::Xaml::Controls;
@@ -13,7 +13,7 @@ using namespace winrt::Windows::Foundation::Collections;
OpenGLES::OpenGLES()
: mEglConfig(nullptr), mEglDisplay(EGL_NO_DISPLAY),
mEglContext(EGL_NO_CONTEXT) {
log("OpenGLES::OpenGLES()");
log(L"OpenGLES::OpenGLES()");
Initialize();
}

@@ -178,7 +178,7 @@ Servo::Servo(hstring url, hstring args, GLsizei width, GLsizei height,
} else if (type == Windows::Foundation::PropertyType::Empty) {
pref.pref_type = capi::CPrefType::Missing;
} else {
log("skipping pref %s. Unknown type", key);
log(L"skipping pref %s. Unknown type", key);
continue;
}
cprefs.push_back(pref);
@@ -6,7 +6,7 @@

#include "pch.h"
#include <EGL/egl.h>
#include "logs.h"
#include "strutils.h"
#include <stdlib.h>

namespace winrt::servo {
@@ -1,4 +1,5 @@
#include "pch.h"
#include "strutils.h"
#include "ServoControl.h"
#include "ServoControl.g.cpp"
#include "Pref.g.cpp"
@@ -277,16 +278,9 @@ hstring ServoControl::LoadURIOrSearch(hstring input) {

// Doesn't look like a URI. Let's search for the string.
auto escapedInput = Uri::EscapeComponent(input);
std::wstring searchUri =
unbox_value<hstring>(std::get<1>(Servo::GetPref(L"shell.searchpage")))
.c_str();
std::wstring keyword = L"%s";
size_t start_pos = searchUri.find(keyword);
if (start_pos == std::string::npos)
searchUri = searchUri + escapedInput;
else
searchUri.replace(start_pos, keyword.length(), escapedInput);
hstring finalUri{searchUri};
std::wstring searchUri = unbox_value<hstring>(std::get<1>(Servo::GetPref(L"shell.searchpage"))).c_str();
std::wstring formated = format(searchUri, escapedInput.c_str());
hstring finalUri{formated};
TryLoadUri(finalUri);
return finalUri;
}
@@ -323,10 +317,10 @@ void ServoControl::RunOnGLThread(std::function<void()> task) {
/**** GL THREAD LOOP ****/

void ServoControl::Loop() {
log("BrowserPage::Loop(). GL thread: %i", GetCurrentThreadId());
log(L"BrowserPage::Loop(). GL thread: %i", GetCurrentThreadId());

if (mServo == nullptr) {
log("Entering loop");
log(L"Entering loop");
ServoDelegate *sd = static_cast<ServoDelegate *>(this);
EGLNativeWindowType win = GetNativeWindow();
mServo = std::make_unique<Servo>(mInitialURL, mArgs, mPanelWidth,
@@ -367,7 +361,7 @@ void ServoControl::StartRenderLoop() {
#endif
}
mLooping = true;
log("BrowserPage::StartRenderLoop(). UI thread: %i", GetCurrentThreadId());
log(L"BrowserPage::StartRenderLoop(). UI thread: %i", GetCurrentThreadId());
auto task = Concurrency::create_task([=] { Loop(); });
mLoopTask = std::make_unique<Concurrency::task<void>>(task);
}

This file was deleted.

This file was deleted.

@@ -0,0 +1,22 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */

#pragma once

template <typename... Args>
std::wstring format(const std::wstring &txt, Args... args) {
size_t size = swprintf(nullptr, 0, txt.c_str(), args...) + 1;
if (size <= 0) {
throw std::runtime_error("Error during formatting.");
}
auto ptr = new wchar_t[size];

This comment has been minimized.

Copy link
@jdm

jdm Jun 10, 2020

Member

This looks like we leak this memory every time we call format(). Since the wstring constructor copies the contents of the buffer, we should be able to do this instead:

auto ptr = new wchar_t[size];
swprintf(ptr, size, txt.c_str(), args...);
auto string = std::wstring(ptr);
delete ptr;
return string;
swprintf(ptr, size, txt.c_str(), args...);
auto wstr = std::wstring(ptr);
delete ptr;
return wstr;
}

template <typename... Args> void log(const std::wstring &txt, Args... args) {
OutputDebugString((format(txt, args...) + L"\r\n").c_str());
}
ProTip! Use n and p to navigate between commits in a pull request.
You can’t perform that action at this time.