diff --git a/engine/core/script/dart_controller.cc b/engine/core/script/dart_controller.cc index d024c441529794f94be1877265f11337e9cac589..04b03c117f329dbea5da92a91cdc32868e24a421 100644 --- a/engine/core/script/dart_controller.cc +++ b/engine/core/script/dart_controller.cc @@ -119,7 +119,9 @@ void DartController::DidLoadMainLibrary(KURL url) { Dart_Handle library = Dart_LookupLibrary( StringToDart(dart_state(), url.string())); - CHECK(!LogIfError(library)); + // TODO(eseidel): We need to load a 404 page instead! + if (LogIfError(library)) + return; DartInvokeAppField(library, ToDart("main"), 0, nullptr); } diff --git a/engine/core/script/dart_loader.cc b/engine/core/script/dart_loader.cc index 773637a59789831f3d890e495baa385abf130375..f6efdb363dcf6bdc1cba3eba81363fe0d569fbe9 100644 --- a/engine/core/script/dart_loader.cc +++ b/engine/core/script/dart_loader.cc @@ -239,6 +239,11 @@ void DartLoader::WaitForDependencies( } void DartLoader::LoadLibrary(const KURL& url, mojo::URLResponsePtr response) { + if (response && response->status_code >= 400) { + LOG(ERROR) << url.string().utf8().data() + << " failed with " << response->status_code; + } + const auto& result = pending_libraries_.add(url.string(), nullptr); if (result.isNewEntry) { OwnPtr job = adoptPtr(new ImportJob(this, url)); diff --git a/services/oknet/src/org/domokit/oknet/UrlLoaderImpl.java b/services/oknet/src/org/domokit/oknet/UrlLoaderImpl.java index 5a23cc1f249bbda907665bdb8df26ab323c7de97..80340511ac7b2a71228d9107ccfdf2f4d304bec2 100644 --- a/services/oknet/src/org/domokit/oknet/UrlLoaderImpl.java +++ b/services/oknet/src/org/domokit/oknet/UrlLoaderImpl.java @@ -76,9 +76,14 @@ public class UrlLoaderImpl implements UrlLoader { buffer.put(tmp); mProducer.endWriteData(result == -1 ? 0 : result); } catch (MojoException e) { - if (e.getMojoResult() != MojoResult.SHOULD_WAIT) + // No one read the pipe, they just closed it. + if (e.getMojoResult() == MojoResult.FAILED_PRECONDITION) { + break; + } else if (e.getMojoResult() == MojoResult.SHOULD_WAIT) { + mCore.wait(mProducer, Core.HandleSignals.WRITABLE, -1); + } else { throw e; - mCore.wait(mProducer, Core.HandleSignals.WRITABLE, -1); + } } catch (IOException e) { Log.e(TAG, "mSource.read failed", e); break;