[core] Pass std::exception_ptr in MapObserver::onDidFailLoadingMap

This commit is contained in:
Bruno de Oliveira Abinader
2017-03-15 16:06:52 +02:00
parent e10e37bc20
commit 5ff4110243
3 changed files with 17 additions and 24 deletions

View File

@@ -1,6 +1,7 @@
#pragma once
#include <cstdint>
#include <exception>
namespace mbgl {
@@ -26,7 +27,7 @@ public:
virtual void onCameraDidChange(CameraChangeMode) {}
virtual void onWillStartLoadingMap() {}
virtual void onDidFinishLoadingMap() {}
virtual void onDidFailLoadingMap() {}
virtual void onDidFailLoadingMap(std::exception_ptr) {}
virtual void onWillStartRenderingFrame() {}
virtual void onDidFinishRenderingFrame(RenderMode) {}
virtual void onWillStartRenderingMap() {}

View File

@@ -1102,8 +1102,8 @@ void Map::Impl::onStyleLoaded() {
observer.onDidFinishLoadingStyle();
}
void Map::Impl::onStyleError(std::exception_ptr) {
observer.onDidFailLoadingMap();
void Map::Impl::onStyleError(std::exception_ptr error) {
observer.onDidFailLoadingMap(error);
}
void Map::Impl::onResourceError(std::exception_ptr error) {

View File

@@ -28,15 +28,7 @@ class BackendTest : public HeadlessBackend {
public:
BackendTest() : HeadlessBackend(test::sharedDisplay()) {}
void setDidFailLoadingMapCallback(std::function<void()>&& callback) {
didFailLoadingMapCallback = std::move(callback);
}
void setDidFinishLoadingStyleCallback(std::function<void()>&& callback) {
didFinishLoadingStyleCallback = std::move(callback);
}
void onDidFailLoadingMap() final {
void onDidFailLoadingMap(std::exception_ptr) final {
if (didFailLoadingMapCallback) {
didFailLoadingMapCallback();
}
@@ -113,9 +105,9 @@ TEST(Map, SetStyleInvalidJSON) {
Log::setObserver(std::make_unique<FixtureLogObserver>());
bool fail = false;
test.backend.setDidFailLoadingMapCallback([&]() {
test.backend.didFailLoadingMapCallback = [&]() {
fail = true;
});
};
{
Map map(test.backend, test.view.getSize(), 1, test.fileSource, test.threadPool,
@@ -144,9 +136,9 @@ TEST(Map, SetStyleInvalidURL) {
return response;
};
test.backend.setDidFailLoadingMapCallback([&]() {
test.backend.didFailLoadingMapCallback = [&]() {
test.runLoop.stop();
});
};
Map map(test.backend, test.view.getSize(), 1, test.fileSource, test.threadPool, MapMode::Still);
map.setStyleURL("mapbox://bar");
@@ -257,9 +249,9 @@ TEST(Map, StyleLoadedSignal) {
// The map should emit a signal on style loaded
bool emitted = false;
test.backend.setDidFinishLoadingStyleCallback([&]() {
test.backend.didFinishLoadingStyleCallback = [&]() {
emitted = true;
});
};
map.setStyleJSON(util::read_file("test/fixtures/api/empty.json"));
EXPECT_TRUE(emitted);
@@ -277,9 +269,9 @@ TEST(Map, TEST_REQUIRES_SERVER(StyleNetworkErrorRetry)) {
Map map(test.backend, test.view.getSize(), 1, fileSource, test.threadPool, MapMode::Still);
map.setStyleURL("http://127.0.0.1:3000/style-fail-once-500");
test.backend.setDidFinishLoadingStyleCallback([&]() {
test.backend.didFinishLoadingStyleCallback = [&]() {
test.runLoop.stop();
});
};
test.runLoop.run();
}
@@ -295,15 +287,15 @@ TEST(Map, TEST_REQUIRES_SERVER(StyleNotFound)) {
util::Timer timer;
// Not found errors should not trigger a retry like other errors.
test.backend.setDidFinishLoadingStyleCallback([&]() {
test.backend.didFinishLoadingStyleCallback = [&]() {
FAIL() << "Should not retry on not found!";
});
};
test.backend.setDidFailLoadingMapCallback([&]() {
test.backend.didFailLoadingMapCallback = [&]() {
timer.start(Milliseconds(1100), 0s, [&] {
test.runLoop.stop();
});
});
};
test.runLoop.run();