diff --git a/Applications/Makefile.common b/Applications/Makefile.common index 10f0cd31c6..13ca4d4a94 100755 --- a/Applications/Makefile.common +++ b/Applications/Makefile.common @@ -3,7 +3,7 @@ DEFINES += -DUSERLAND all: $(APP) $(APP): $(OBJS) - $(LD) -o $(APP) $(LDFLAGS) $(OBJS) -lmarkdown -lhtml -laudio -lipc -lvt -lpcidb -lgui -ldraw -lthread -lpthread -lcore -lc + $(LD) -o $(APP) $(LDFLAGS) $(OBJS) -lmarkdown -lhtml -laudio -lipc -lvt -lpcidb -lgui -ldraw -lprotocol -lipc -lthread -lpthread -lcore -lc .cpp.o: @echo "CXX $<"; $(CXX) $(CXXFLAGS) -o $@ -c $< diff --git a/DevTools/HackStudio/Makefile b/DevTools/HackStudio/Makefile index 97756dac10..b34672084c 100644 --- a/DevTools/HackStudio/Makefile +++ b/DevTools/HackStudio/Makefile @@ -25,7 +25,7 @@ DEFINES += -DUSERLAND all: $(APP) $(APP): $(OBJS) - $(LD) -o $(APP) $(LDFLAGS) $(OBJS) -lvt -lhtml -lmarkdown -lgui -ldraw -lthread -lpthread -lcore -lc + $(LD) -o $(APP) $(LDFLAGS) $(OBJS) -lvt -lhtml -lprotocol -lipc -lmarkdown -lgui -ldraw -lthread -lpthread -lcore -lc .cpp.o: @echo "CXX $<"; $(CXX) $(CXXFLAGS) -o $@ -c $< diff --git a/Libraries/LibHTML/ResourceLoader.cpp b/Libraries/LibHTML/ResourceLoader.cpp index c0c3fe9916..24821ee3ff 100644 --- a/Libraries/LibHTML/ResourceLoader.cpp +++ b/Libraries/LibHTML/ResourceLoader.cpp @@ -1,8 +1,8 @@ +#include #include -#include -#include -#include #include +#include +#include ResourceLoader& ResourceLoader::the() { @@ -12,6 +12,11 @@ ResourceLoader& ResourceLoader::the() return *s_the; } +ResourceLoader::ResourceLoader() + : m_protocol_client(LibProtocol::Client::construct()) +{ +} + void ResourceLoader::load(const URL& url, Function callback) { if (url.protocol() == "file") { @@ -31,25 +36,17 @@ void ResourceLoader::load(const URL& url, Function call } if (url.protocol() == "http") { - CHttpRequest request; - request.set_url(url); - request.set_method(CHttpRequest::Method::GET); - auto job = request.schedule(); + auto download = protocol_client().start_download(url.to_string()); + download->on_finish = [callback = move(callback)](bool success, const ByteBuffer& payload, auto) { + if (!success) { + dbg() << "HTTP load failed!"; + ASSERT_NOT_REACHED(); + } + callback(ByteBuffer::copy(payload.data(), payload.size())); + }; ++m_pending_loads; if (on_load_counter_change) on_load_counter_change(); - job->on_finish = [this, job, callback = move(callback)](bool success) { - --m_pending_loads; - if (on_load_counter_change) - on_load_counter_change(); - if (!success) { - dbg() << "HTTP job failed!"; - ASSERT_NOT_REACHED(); - } - auto* response = job->response(); - ASSERT(response); - callback(response->payload()); - }; return; } diff --git a/Libraries/LibHTML/ResourceLoader.h b/Libraries/LibHTML/ResourceLoader.h index 7d5826efc9..f81a5ec0ed 100644 --- a/Libraries/LibHTML/ResourceLoader.h +++ b/Libraries/LibHTML/ResourceLoader.h @@ -4,6 +4,10 @@ #include #include +namespace LibProtocol { +class Client; +} + class ResourceLoader : public CObject { C_OBJECT(ResourceLoader) public: @@ -16,7 +20,10 @@ public: int pending_loads() const { return m_pending_loads; } private: - ResourceLoader() {} + ResourceLoader(); int m_pending_loads { 0 }; + + LibProtocol::Client& protocol_client() { return *m_protocol_client; } + RefPtr m_protocol_client; };