Index: third_party/WebKit/Source/core/inspector/InspectorLayerTreeAgent.cpp |
diff --git a/third_party/WebKit/Source/core/inspector/InspectorLayerTreeAgent.cpp b/third_party/WebKit/Source/core/inspector/InspectorLayerTreeAgent.cpp |
index ce7e1a48e9fcfb0d953bed52c10edda1c825a187..cbe1f85b8320d2eb9214c816a30c06c4d6cbd54c 100644 |
--- a/third_party/WebKit/Source/core/inspector/InspectorLayerTreeAgent.cpp |
+++ b/third_party/WebKit/Source/core/inspector/InspectorLayerTreeAgent.cpp |
@@ -182,18 +182,19 @@ void InspectorLayerTreeAgent::restore() { |
// front-end request document and re-enable the agent manually after this. |
} |
-void InspectorLayerTreeAgent::enable(ErrorString*) { |
+Response InspectorLayerTreeAgent::enable() { |
m_instrumentingAgents->addInspectorLayerTreeAgent(this); |
Document* document = m_inspectedFrames->root()->document(); |
if (document && |
document->lifecycle().state() >= DocumentLifecycle::CompositingClean) |
layerTreeDidChange(); |
+ return Response::OK(); |
} |
-void InspectorLayerTreeAgent::disable(ErrorString*) { |
+Response InspectorLayerTreeAgent::disable() { |
m_instrumentingAgents->removeInspectorLayerTreeAgent(this); |
m_snapshotById.clear(); |
- ErrorString unused; |
+ return Response::OK(); |
} |
void InspectorLayerTreeAgent::layerTreeDidChange() { |
@@ -315,33 +316,29 @@ static GraphicsLayer* findLayerById(GraphicsLayer* root, int layerId) { |
return nullptr; |
} |
-GraphicsLayer* InspectorLayerTreeAgent::layerById(ErrorString* errorString, |
- const String& layerId) { |
+Response InspectorLayerTreeAgent::layerById(const String& layerId, |
+ GraphicsLayer*& result) { |
bool ok; |
int id = layerId.toInt(&ok); |
- if (!ok) { |
- *errorString = "Invalid layer id"; |
- return nullptr; |
- } |
+ if (!ok) |
+ return Response::Error("Invalid layer id"); |
PaintLayerCompositor* compositor = paintLayerCompositor(); |
- if (!compositor) { |
- *errorString = "Not in compositing mode"; |
- return nullptr; |
- } |
+ if (!compositor) |
+ return Response::Error("Not in compositing mode"); |
- GraphicsLayer* result = findLayerById(rootGraphicsLayer(), id); |
+ result = findLayerById(rootGraphicsLayer(), id); |
if (!result) |
- *errorString = "No layer matching given id found"; |
- return result; |
+ return Response::Error("No layer matching given id found"); |
+ return Response::OK(); |
} |
-void InspectorLayerTreeAgent::compositingReasons( |
- ErrorString* errorString, |
+Response InspectorLayerTreeAgent::compositingReasons( |
const String& layerId, |
std::unique_ptr<Array<String>>* reasonStrings) { |
- const GraphicsLayer* graphicsLayer = layerById(errorString, layerId); |
- if (!graphicsLayer) |
- return; |
+ GraphicsLayer* graphicsLayer = nullptr; |
+ Response response = layerById(layerId, graphicsLayer); |
+ if (!response.isSuccess()) |
+ return response; |
CompositingReasons reasonsBitmask = graphicsLayer->getCompositingReasons(); |
*reasonStrings = Array<String>::create(); |
for (size_t i = 0; i < kNumberOfCompositingReasons; ++i) { |
@@ -353,14 +350,17 @@ void InspectorLayerTreeAgent::compositingReasons( |
#endif |
} |
ASSERT(!reasonsBitmask); |
+ return Response::OK(); |
} |
-void InspectorLayerTreeAgent::makeSnapshot(ErrorString* errorString, |
- const String& layerId, |
- String* snapshotId) { |
- GraphicsLayer* layer = layerById(errorString, layerId); |
- if (!layer || !layer->drawsContent()) |
- return; |
+Response InspectorLayerTreeAgent::makeSnapshot(const String& layerId, |
+ String* snapshotId) { |
+ GraphicsLayer* layer = nullptr; |
+ Response response = layerById(layerId, layer); |
+ if (!response.isSuccess()) |
+ return response; |
+ if (!layer->drawsContent()) |
+ return Response::Error("Layer does not draw content"); |
IntSize size = expandedIntSize(layer->size()); |
@@ -378,83 +378,71 @@ void InspectorLayerTreeAgent::makeSnapshot(ErrorString* errorString, |
*snapshotId = String::number(++s_lastSnapshotId); |
bool newEntry = m_snapshotById.add(*snapshotId, snapshot).isNewEntry; |
DCHECK(newEntry); |
+ return Response::OK(); |
} |
-void InspectorLayerTreeAgent::loadSnapshot( |
- ErrorString* errorString, |
+Response InspectorLayerTreeAgent::loadSnapshot( |
std::unique_ptr<Array<protocol::LayerTree::PictureTile>> tiles, |
String* snapshotId) { |
- if (!tiles->length()) { |
- *errorString = "Invalid argument, no tiles provided"; |
- return; |
- } |
+ if (!tiles->length()) |
+ return Response::Error("Invalid argument, no tiles provided"); |
Vector<RefPtr<PictureSnapshot::TilePictureStream>> decodedTiles; |
decodedTiles.grow(tiles->length()); |
for (size_t i = 0; i < tiles->length(); ++i) { |
protocol::LayerTree::PictureTile* tile = tiles->get(i); |
decodedTiles[i] = adoptRef(new PictureSnapshot::TilePictureStream()); |
decodedTiles[i]->layerOffset.set(tile->getX(), tile->getY()); |
- if (!base64Decode(tile->getPicture(), decodedTiles[i]->data)) { |
- *errorString = "Invalid base64 encoding"; |
- return; |
- } |
+ if (!base64Decode(tile->getPicture(), decodedTiles[i]->data)) |
+ return Response::Error("Invalid base64 encoding"); |
} |
RefPtr<PictureSnapshot> snapshot = PictureSnapshot::load(decodedTiles); |
- if (!snapshot) { |
- *errorString = "Invalid snapshot format"; |
- return; |
- } |
- if (snapshot->isEmpty()) { |
- *errorString = "Empty snapshot"; |
- return; |
- } |
+ if (!snapshot) |
+ return Response::Error("Invalid snapshot format"); |
+ if (snapshot->isEmpty()) |
+ return Response::Error("Empty snapshot"); |
*snapshotId = String::number(++s_lastSnapshotId); |
bool newEntry = m_snapshotById.add(*snapshotId, snapshot).isNewEntry; |
DCHECK(newEntry); |
+ return Response::OK(); |
} |
-void InspectorLayerTreeAgent::releaseSnapshot(ErrorString* errorString, |
- const String& snapshotId) { |
+Response InspectorLayerTreeAgent::releaseSnapshot(const String& snapshotId) { |
SnapshotById::iterator it = m_snapshotById.find(snapshotId); |
- if (it == m_snapshotById.end()) { |
- *errorString = "Snapshot not found"; |
- return; |
- } |
+ if (it == m_snapshotById.end()) |
+ return Response::Error("Snapshot not found"); |
m_snapshotById.remove(it); |
+ return Response::OK(); |
} |
-const PictureSnapshot* InspectorLayerTreeAgent::snapshotById( |
- ErrorString* errorString, |
- const String& snapshotId) { |
+Response InspectorLayerTreeAgent::snapshotById(const String& snapshotId, |
+ const PictureSnapshot*& result) { |
SnapshotById::iterator it = m_snapshotById.find(snapshotId); |
- if (it == m_snapshotById.end()) { |
- *errorString = "Snapshot not found"; |
- return nullptr; |
- } |
- return it->value.get(); |
+ if (it == m_snapshotById.end()) |
+ return Response::Error("Snapshot not found"); |
+ result = it->value.get(); |
+ return Response::OK(); |
} |
-void InspectorLayerTreeAgent::replaySnapshot(ErrorString* errorString, |
- const String& snapshotId, |
- const Maybe<int>& fromStep, |
- const Maybe<int>& toStep, |
- const Maybe<double>& scale, |
- String* dataURL) { |
- const PictureSnapshot* snapshot = snapshotById(errorString, snapshotId); |
- if (!snapshot) |
- return; |
+Response InspectorLayerTreeAgent::replaySnapshot(const String& snapshotId, |
+ Maybe<int> fromStep, |
+ Maybe<int> toStep, |
+ Maybe<double> scale, |
+ String* dataURL) { |
+ const PictureSnapshot* snapshot = nullptr; |
+ Response response = snapshotById(snapshotId, snapshot); |
+ if (!response.isSuccess()) |
+ return response; |
std::unique_ptr<Vector<char>> base64Data = snapshot->replay( |
fromStep.fromMaybe(0), toStep.fromMaybe(0), scale.fromMaybe(1.0)); |
- if (!base64Data) { |
- *errorString = "Image encoding failed"; |
- return; |
- } |
+ if (!base64Data) |
+ return Response::Error("Image encoding failed"); |
StringBuilder url; |
url.append("data:image/png;base64,"); |
url.reserveCapacity(url.length() + base64Data->size()); |
url.append(base64Data->begin(), base64Data->size()); |
*dataURL = url.toString(); |
+ return Response::OK(); |
} |
static void parseRect(protocol::DOM::Rect* object, FloatRect* rect) { |
@@ -462,16 +450,16 @@ static void parseRect(protocol::DOM::Rect* object, FloatRect* rect) { |
object->getHeight()); |
} |
-void InspectorLayerTreeAgent::profileSnapshot( |
- ErrorString* errorString, |
+Response InspectorLayerTreeAgent::profileSnapshot( |
const String& snapshotId, |
- const protocol::Maybe<int>& minRepeatCount, |
- const protocol::Maybe<double>& minDuration, |
- const Maybe<protocol::DOM::Rect>& clipRect, |
+ Maybe<int> minRepeatCount, |
+ Maybe<double> minDuration, |
+ Maybe<protocol::DOM::Rect> clipRect, |
std::unique_ptr<protocol::Array<protocol::Array<double>>>* outTimings) { |
- const PictureSnapshot* snapshot = snapshotById(errorString, snapshotId); |
- if (!snapshot) |
- return; |
+ const PictureSnapshot* snapshot = nullptr; |
+ Response response = snapshotById(snapshotId, snapshot); |
+ if (!response.isSuccess()) |
+ return response; |
FloatRect rect; |
if (clipRect.isJust()) |
parseRect(clipRect.fromJust(), &rect); |
@@ -486,20 +474,24 @@ void InspectorLayerTreeAgent::profileSnapshot( |
outRow->addItem(row[j]); |
(*outTimings)->addItem(std::move(outRow)); |
} |
+ return Response::OK(); |
} |
-void InspectorLayerTreeAgent::snapshotCommandLog( |
- ErrorString* errorString, |
+Response InspectorLayerTreeAgent::snapshotCommandLog( |
const String& snapshotId, |
std::unique_ptr<Array<protocol::DictionaryValue>>* commandLog) { |
- const PictureSnapshot* snapshot = snapshotById(errorString, snapshotId); |
- if (!snapshot) |
- return; |
- protocol::ErrorSupport errors(errorString); |
+ const PictureSnapshot* snapshot = nullptr; |
+ Response response = snapshotById(snapshotId, snapshot); |
+ if (!response.isSuccess()) |
+ return response; |
+ protocol::ErrorSupport errors; |
std::unique_ptr<protocol::Value> logValue = |
protocol::parseJSON(snapshot->snapshotCommandLog()->toJSONString()); |
*commandLog = |
Array<protocol::DictionaryValue>::parse(logValue.get(), &errors); |
+ if (errors.hasErrors()) |
+ return Response::Error(errors.errors()); |
+ return Response::OK(); |
} |
void InspectorLayerTreeAgent::willAddPageOverlay(const GraphicsLayer* layer) { |