Chromium Code Reviews| Index: Source/modules/screen_orientation/testing/InternalsScreenOrientation.cpp |
| diff --git a/Source/modules/screen_orientation/testing/InternalsScreenOrientation.cpp b/Source/modules/screen_orientation/testing/InternalsScreenOrientation.cpp |
| new file mode 100644 |
| index 0000000000000000000000000000000000000000..c26555df1781476609448f7ed2200a6b55072c69 |
| --- /dev/null |
| +++ b/Source/modules/screen_orientation/testing/InternalsScreenOrientation.cpp |
| @@ -0,0 +1,45 @@ |
| +// Copyright 2014 The Chromium Authors. All rights reserved. |
| +// Use of this source code is governed by a BSD-style license that can be |
| +// found in the LICENSE file. |
| + |
| +#include "config.h" |
| +#include "InternalsScreenOrientation.h" |
| + |
| +#include "core/dom/Document.h" |
| +#include "modules/screen_orientation/ScreenOrientation.h" |
| +#include "modules/screen_orientation/ScreenOrientationController.h" |
| +#include "modules/screen_orientation/testing/ScreenOrientationClientMock.h" |
| + |
| +namespace WebCore { |
| + |
| +void InternalsScreenOrientation::setScreenOrientationClientMock(Internals* internals, Document* document) |
| +{ |
| + ASSERT(internals && document && document->page()); |
| + ScreenOrientationController* controller = ScreenOrientationController::from(document->page()); |
| + ScreenOrientationClientMock* client = new ScreenOrientationClientMock(); |
|
Peter Beverloo
2014/02/12 18:19:37
What owns this client? Won't we leak it?
Peter Beverloo
2014/02/12 18:19:37
What/who owns this client? Won't we leak it?
Inactive
2014/02/12 19:38:37
You are right, this was leaked. This is now delete
|
| + controller->setClientForTest(client); |
| + client->setController(controller); |
| +} |
| + |
| +void InternalsScreenOrientation::setScreenOrientation(Internals* internals, Document* document, const AtomicString& orientationString) |
| +{ |
| + ASSERT(internals && document && document->page()); |
| + ScreenOrientationClientMock* client = screenOrientationClient(document); |
| + if (!client) |
| + return; |
| + |
| + ScreenOrientationValue orientation = static_cast<ScreenOrientationValue>(ScreenOrientation::stringToOrientationValues(orientationString)); |
| + if (orientation == OrientationInvalid) |
| + return; |
| + client->setScreenOrientation(orientation); |
| +} |
| + |
| +ScreenOrientationClientMock* InternalsScreenOrientation::screenOrientationClient(Document* document) |
| +{ |
| + ScreenOrientationController* controller = ScreenOrientationController::from(document->page()); |
| + if (!controller->hasClientForTest()) |
| + return 0; |
| + return static_cast<ScreenOrientationClientMock*>(controller->client()); |
| +} |
| + |
| +} // namespace WebCore |