LibWebView: Define the list of built-in search engines in LibWebView

These engines and their query URLs are duplicated in several places.
Before implementing search support in the AppKit chrome, let's move
these engines to LibWebView.
This commit is contained in:
Timothy Flynn 2023-10-19 15:50:39 -04:00 committed by Tim Flynn
parent 10428fc7ce
commit b770ed03ac
4 changed files with 74 additions and 0 deletions

View file

@ -9,6 +9,7 @@ set(SOURCES
DOMTreeModel.cpp
History.cpp
RequestServerAdapter.cpp
SearchEngine.cpp
SourceHighlighter.cpp
StylePropertiesModel.cpp
URL.cpp

View file

@ -19,6 +19,7 @@ class ViewImplementation;
class WebContentClient;
struct CookieStorageKey;
struct SearchEngine;
}

View file

@ -0,0 +1,49 @@
/*
* Copyright (c) 2023, Tim Flynn <trflynn89@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include <AK/Find.h>
#include <LibWebView/SearchEngine.h>
namespace WebView {
static constexpr auto builtin_search_engines = Array {
SearchEngine { "Bing"sv, "https://www.bing.com/search?q={}"sv },
SearchEngine { "Brave"sv, "https://search.brave.com/search?q={}"sv },
SearchEngine { "DuckDuckGo"sv, "https://duckduckgo.com/?q={}"sv },
SearchEngine { "GitHub"sv, "https://github.com/search?q={}"sv },
SearchEngine { "Google"sv, "https://www.google.com/search?q={}"sv },
SearchEngine { "Mojeek"sv, "https://www.mojeek.com/search?q={}"sv },
SearchEngine { "Yahoo"sv, "https://search.yahoo.com/search?p={}"sv },
SearchEngine { "Yandex"sv, "https://yandex.com/search/?text={}"sv },
};
ReadonlySpan<SearchEngine> search_engines()
{
return builtin_search_engines;
}
SearchEngine const& default_search_engine()
{
static auto default_engine = find_search_engine("Google"sv);
VERIFY(default_engine.has_value());
return *default_engine;
}
Optional<SearchEngine const&> find_search_engine(StringView name)
{
auto it = AK::find_if(builtin_search_engines.begin(), builtin_search_engines.end(),
[&](auto const& engine) {
return engine.name == name;
});
if (it == builtin_search_engines.end())
return {};
return *it;
}
}

View file

@ -0,0 +1,23 @@
/*
* Copyright (c) 2023, Tim Flynn <trflynn89@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <AK/Span.h>
#include <AK/StringView.h>
namespace WebView {
struct SearchEngine {
StringView name;
StringView query_url;
};
ReadonlySpan<SearchEngine> search_engines();
SearchEngine const& default_search_engine();
Optional<SearchEngine const&> find_search_engine(StringView name);
}