mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 21:17:44 +00:00
LibWeb: Add Page::has_ongoing_navigation()
Introduce has_ongoing_navigation() that allows to check if resource state in FrameLoading is pending. This API is going to be used in upcoming fix for wait_for_navigation_to_complete() in WebDriver.
This commit is contained in:
parent
d1d9d7a4f3
commit
31b9729333
5 changed files with 23 additions and 9 deletions
|
@ -35,6 +35,8 @@ public:
|
|||
|
||||
void load_html(StringView, const AK::URL&);
|
||||
|
||||
bool is_pending() const { return resource()->is_pending(); }
|
||||
|
||||
HTML::BrowsingContext& browsing_context() { return m_browsing_context; }
|
||||
HTML::BrowsingContext const& browsing_context() const { return m_browsing_context; }
|
||||
|
||||
|
|
|
@ -33,8 +33,7 @@ Resource::Resource(Type type, Resource& resource)
|
|||
: m_request(resource.m_request)
|
||||
, m_encoded_data(move(resource.m_encoded_data))
|
||||
, m_type(type)
|
||||
, m_loaded(resource.m_loaded)
|
||||
, m_failed(resource.m_failed)
|
||||
, m_state(resource.m_state)
|
||||
, m_error(move(resource.m_error))
|
||||
, m_encoding(move(resource.m_encoding))
|
||||
, m_mime_type(move(resource.m_mime_type))
|
||||
|
@ -89,12 +88,12 @@ static bool is_valid_encoding(StringView encoding)
|
|||
|
||||
void Resource::did_load(Badge<ResourceLoader>, ReadonlyBytes data, HashMap<DeprecatedString, DeprecatedString, CaseInsensitiveStringTraits> const& headers, Optional<u32> status_code)
|
||||
{
|
||||
VERIFY(!m_loaded);
|
||||
VERIFY(m_state == State::Pending);
|
||||
// FIXME: Handle OOM failure.
|
||||
m_encoded_data = ByteBuffer::copy(data).release_value_but_fixme_should_propagate_errors();
|
||||
m_response_headers = headers.clone().release_value_but_fixme_should_propagate_errors();
|
||||
m_status_code = move(status_code);
|
||||
m_loaded = true;
|
||||
m_state = State::Loaded;
|
||||
|
||||
auto content_type = headers.get("Content-Type");
|
||||
|
||||
|
@ -136,7 +135,7 @@ void Resource::did_fail(Badge<ResourceLoader>, DeprecatedString const& error, Op
|
|||
{
|
||||
m_error = error;
|
||||
m_status_code = move(status_code);
|
||||
m_failed = true;
|
||||
m_state = State::Failed;
|
||||
|
||||
for_each_client([](auto& client) {
|
||||
client.resource_did_fail();
|
||||
|
|
|
@ -37,9 +37,16 @@ public:
|
|||
|
||||
Type type() const { return m_type; }
|
||||
|
||||
bool is_loaded() const { return m_loaded; }
|
||||
enum class State {
|
||||
Pending,
|
||||
Loaded,
|
||||
Failed,
|
||||
};
|
||||
|
||||
bool is_pending() const { return m_state == State::Pending; }
|
||||
bool is_loaded() const { return m_state == State::Loaded; }
|
||||
bool is_failed() const { return m_state == State::Failed; }
|
||||
|
||||
bool is_failed() const { return m_failed; }
|
||||
DeprecatedString const& error() const { return m_error; }
|
||||
|
||||
bool has_encoded_data() const { return !m_encoded_data.is_empty(); }
|
||||
|
@ -71,8 +78,7 @@ private:
|
|||
LoadRequest m_request;
|
||||
ByteBuffer m_encoded_data;
|
||||
Type m_type { Type::Generic };
|
||||
bool m_loaded { false };
|
||||
bool m_failed { false };
|
||||
State m_state { State::Pending };
|
||||
DeprecatedString m_error;
|
||||
Optional<DeprecatedString> m_encoding;
|
||||
|
||||
|
|
|
@ -52,6 +52,11 @@ void Page::load_html(StringView html, const AK::URL& url)
|
|||
top_level_browsing_context().loader().load_html(html, url);
|
||||
}
|
||||
|
||||
bool Page::has_ongoing_navigation() const
|
||||
{
|
||||
return top_level_browsing_context().loader().is_pending();
|
||||
}
|
||||
|
||||
Gfx::Palette Page::palette() const
|
||||
{
|
||||
return m_client.palette();
|
||||
|
|
|
@ -60,6 +60,8 @@ public:
|
|||
|
||||
void load_html(StringView, const AK::URL&);
|
||||
|
||||
bool has_ongoing_navigation() const;
|
||||
|
||||
CSSPixelPoint device_to_css_point(DevicePixelPoint) const;
|
||||
DevicePixelPoint css_to_device_point(CSSPixelPoint) const;
|
||||
CSSPixelRect device_to_css_rect(DevicePixelRect) const;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue