| // Copyright (c) 2012 The Chromium Embedded Framework 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 "tests/cefclient/browser/binding_test.h" | |
| #include <algorithm> | |
| #include <string> | |
| #include "tests/cefclient/browser/test_runner.h" | |
| namespace client { | |
| namespace binding_test { | |
| namespace { | |
| const char kTestUrlPath[] = "/binding"; | |
| const char kTestMessageName[] = "BindingTest"; | |
| // Handle messages in the browser process. | |
| class Handler : public CefMessageRouterBrowserSide::Handler { | |
| public: | |
| Handler() {} | |
| // Called due to cefQuery execution in binding.html. | |
| virtual bool OnQuery(CefRefPtr<CefBrowser> browser, | |
| CefRefPtr<CefFrame> frame, | |
| int64 query_id, | |
| const CefString& request, | |
| bool persistent, | |
| CefRefPtr<Callback> callback) OVERRIDE { | |
| // Only handle messages from the test URL. | |
| const std::string& url = frame->GetURL(); | |
| if (!test_runner::IsTestURL(url, kTestUrlPath)) | |
| return false; | |
| const std::string& message_name = request; | |
| if (message_name.find(kTestMessageName) == 0) { | |
| // Reverse the string and return. | |
| std::string result = message_name.substr(sizeof(kTestMessageName)); | |
| std::reverse(result.begin(), result.end()); | |
| callback->Success(result); | |
| return true; | |
| } | |
| return false; | |
| } | |
| }; | |
| } // namespace | |
| void CreateMessageHandlers(test_runner::MessageHandlerSet& handlers) { | |
| handlers.insert(new Handler()); | |
| } | |
| } // namespace binding_test | |
| } // namespace client |