From d7bdf4d1db9ae750f25cc8f1cd2aec7a34e714c2 Mon Sep 17 00:00:00 2001 From: Corey Johnson Date: Mon, 20 Aug 2012 16:23:46 -0700 Subject: [PATCH] Die, stupid files! --- atom.gyp | 10 - tests/cefclient/cefclient_mac.mm | 2 +- tests/cefclient/client_app.cpp | 346 ----------------------- tests/cefclient/client_app.h | 157 ---------- tests/cefclient/client_app_delegates.cpp | 17 -- tests/cefclient/client_handler.cpp | 21 +- tests/cefclient/client_renderer.cpp | 48 ---- tests/cefclient/client_renderer.h | 22 -- tests/cefclient/main_mac.mm | 2 +- tests/cefclient/process_helper_mac.cpp | 3 +- 10 files changed, 4 insertions(+), 624 deletions(-) delete mode 100644 tests/cefclient/client_app.cpp delete mode 100644 tests/cefclient/client_app.h delete mode 100644 tests/cefclient/client_app_delegates.cpp delete mode 100644 tests/cefclient/client_renderer.cpp delete mode 100644 tests/cefclient/client_renderer.h diff --git a/atom.gyp b/atom.gyp index a23e085a4..d48885f9b 100644 --- a/atom.gyp +++ b/atom.gyp @@ -46,13 +46,8 @@ 'sources': [ '<@(includes_common)', '<@(includes_wrapper)', - 'tests/cefclient/client_app.cpp', - 'tests/cefclient/client_app.h', - 'tests/cefclient/client_app_delegates.cpp', 'tests/cefclient/client_handler.cpp', 'tests/cefclient/client_handler.h', - 'tests/cefclient/client_renderer.cpp', - 'tests/cefclient/client_renderer.h', 'tests/cefclient/util.h', ], 'mac_bundle_resources': [ @@ -270,13 +265,8 @@ 'sources': [ 'tests/cefclient/client_handler_mac.mm', 'tests/cefclient/process_helper_mac.cpp', - 'tests/cefclient/client_app.cpp', - 'tests/cefclient/client_app.h', - 'tests/cefclient/client_app_delegates.cpp', 'tests/cefclient/client_handler.cpp', 'tests/cefclient/client_handler.h', - 'tests/cefclient/client_renderer.cpp', - 'tests/cefclient/client_renderer.h', 'tests/cefclient/util.h', ], # TODO(mark): Come up with a fancier way to do this. It should only diff --git a/tests/cefclient/cefclient_mac.mm b/tests/cefclient/cefclient_mac.mm index feb59a2ee..9465af62d 100644 --- a/tests/cefclient/cefclient_mac.mm +++ b/tests/cefclient/cefclient_mac.mm @@ -21,7 +21,7 @@ extern CefRefPtr g_handler; [self populateAppSettings:settings]; CefMainArgs mainArgs(0, NULL); - CefRefPtr app(new ClientApp); + CefRefPtr app; CefInitialize(mainArgs, settings, app.get()); diff --git a/tests/cefclient/client_app.cpp b/tests/cefclient/client_app.cpp deleted file mode 100644 index b6a26d150..000000000 --- a/tests/cefclient/client_app.cpp +++ /dev/null @@ -1,346 +0,0 @@ -// 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. - -// This file is shared by cefclient and cef_unittests so don't include using -// a qualified path. -#include "client_app.h" // NOLINT(build/include) - -#include - -#include "include/cef_cookie.h" -#include "include/cef_process_message.h" -#include "include/cef_task.h" -#include "include/cef_v8.h" -#include "util.h" // NOLINT(build/include) - -namespace { - -// Forward declarations. -void SetList(CefRefPtr source, CefRefPtr target); -void SetList(CefRefPtr source, CefRefPtr target); - -// Transfer a V8 value to a List index. -void SetListValue(CefRefPtr list, int index, - CefRefPtr value) { - if (value->IsArray()) { - CefRefPtr new_list = CefListValue::Create(); - SetList(value, new_list); - list->SetList(index, new_list); - } else if (value->IsString()) { - list->SetString(index, value->GetStringValue()); - } else if (value->IsBool()) { - list->SetBool(index, value->GetBoolValue()); - } else if (value->IsInt()) { - list->SetInt(index, value->GetIntValue()); - } else if (value->IsDouble()) { - list->SetDouble(index, value->GetDoubleValue()); - } -} - -// Transfer a V8 array to a List. -void SetList(CefRefPtr source, CefRefPtr target) { - ASSERT(source->IsArray()); - - int arg_length = source->GetArrayLength(); - if (arg_length == 0) - return; - - // Start with null types in all spaces. - target->SetSize(arg_length); - - for (int i = 0; i < arg_length; ++i) - SetListValue(target, i, source->GetValue(i)); -} - -// Transfer a List value to a V8 array index. -void SetListValue(CefRefPtr list, int index, - CefRefPtr value) { - CefRefPtr new_value; - - CefValueType type = value->GetType(index); - switch (type) { - case VTYPE_LIST: { - CefRefPtr list = value->GetList(index); - new_value = CefV8Value::CreateArray(list->GetSize()); - SetList(list, new_value); - } break; - case VTYPE_BOOL: - new_value = CefV8Value::CreateBool(value->GetBool(index)); - break; - case VTYPE_DOUBLE: - new_value = CefV8Value::CreateDouble(value->GetDouble(index)); - break; - case VTYPE_INT: - new_value = CefV8Value::CreateInt(value->GetInt(index)); - break; - case VTYPE_STRING: - new_value = CefV8Value::CreateString(value->GetString(index)); - break; - default: - break; - } - - if (new_value.get()) { - list->SetValue(index, new_value); - } else { - list->SetValue(index, CefV8Value::CreateNull()); - } -} - -// Transfer a List to a V8 array. -void SetList(CefRefPtr source, CefRefPtr target) { - ASSERT(target->IsArray()); - - int arg_length = source->GetSize(); - if (arg_length == 0) - return; - - for (int i = 0; i < arg_length; ++i) - SetListValue(target, i, source); -} - - -// Handles the native implementation for the client_app extension. -class ClientAppExtensionHandler : public CefV8Handler { - public: - explicit ClientAppExtensionHandler(CefRefPtr client_app) - : client_app_(client_app) { - } - - virtual bool Execute(const CefString& name, - CefRefPtr object, - const CefV8ValueList& arguments, - CefRefPtr& retval, - CefString& exception) { - bool handled = false; - - if (name == "sendMessage") { - // Send a message to the browser process. - if ((arguments.size() == 1 || arguments.size() == 2) && - arguments[0]->IsString()) { - CefRefPtr browser = - CefV8Context::GetCurrentContext()->GetBrowser(); - ASSERT(browser.get()); - - CefString name = arguments[0]->GetStringValue(); - if (!name.empty()) { - CefRefPtr message = - CefProcessMessage::Create(name); - - // Translate the arguments, if any. - if (arguments.size() == 2 && arguments[1]->IsArray()) - SetList(arguments[1], message->GetArgumentList()); - - browser->SendProcessMessage(PID_BROWSER, message); - handled = true; - } - } - } else if (name == "setMessageCallback") { - // Set a message callback. - if (arguments.size() == 2 && arguments[0]->IsString() && - arguments[1]->IsFunction()) { - std::string name = arguments[0]->GetStringValue(); - CefRefPtr context = CefV8Context::GetCurrentContext(); - int browser_id = context->GetBrowser()->GetIdentifier(); - client_app_->SetMessageCallback(name, browser_id, context, - arguments[1]); - handled = true; - } - } else if (name == "removeMessageCallback") { - // Remove a message callback. - if (arguments.size() == 1 && arguments[0]->IsString()) { - std::string name = arguments[0]->GetStringValue(); - CefRefPtr context = CefV8Context::GetCurrentContext(); - int browser_id = context->GetBrowser()->GetIdentifier(); - bool removed = client_app_->RemoveMessageCallback(name, browser_id); - retval = CefV8Value::CreateBool(removed); - handled = true; - } - } - - if (!handled) - exception = "Invalid method arguments"; - - return true; - } - - private: - CefRefPtr client_app_; - - IMPLEMENT_REFCOUNTING(ClientAppExtensionHandler); -}; - -} // namespace - - -ClientApp::ClientApp() - : proxy_type_(PROXY_TYPE_DIRECT) { - CreateRenderDelegates(render_delegates_); - - // Default schemes that support cookies. - cookieable_schemes_.push_back("http"); - cookieable_schemes_.push_back("https"); -} - -void ClientApp::SetMessageCallback(const std::string& message_name, - int browser_id, - CefRefPtr context, - CefRefPtr function) { - ASSERT(CefCurrentlyOn(TID_RENDERER)); - - callback_map_.insert( - std::make_pair(std::make_pair(message_name, browser_id), - std::make_pair(context, function))); -} - -bool ClientApp::RemoveMessageCallback(const std::string& message_name, - int browser_id) { - ASSERT(CefCurrentlyOn(TID_RENDERER)); - - CallbackMap::iterator it = - callback_map_.find(std::make_pair(message_name, browser_id)); - if (it != callback_map_.end()) { - callback_map_.erase(it); - return true; - } - - return false; -} - -void ClientApp::OnContextInitialized() { - // Register cookieable schemes with the global cookie manager. - CefRefPtr manager = CefCookieManager::GetGlobalManager(); - ASSERT(manager.get()); - manager->SetSupportedSchemes(cookieable_schemes_); -} - -void ClientApp::GetProxyForUrl(const CefString& url, - CefProxyInfo& proxy_info) { - proxy_info.proxyType = proxy_type_; - if (!proxy_config_.empty()) - CefString(&proxy_info.proxyList) = proxy_config_; -} - -void ClientApp::OnWebKitInitialized() { - // Register the client_app extension. - std::string app_code = - "var app;" - "if (!app)" - " app = {};" - "(function() {" - " app.sendMessage = function(name, arguments) {" - " native function sendMessage();" - " return sendMessage(name, arguments);" - " };" - " app.setMessageCallback = function(name, callback) {" - " native function setMessageCallback();" - " return setMessageCallback(name, callback);" - " };" - " app.removeMessageCallback = function(name) {" - " native function removeMessageCallback();" - " return removeMessageCallback(name);" - " };" - "})();"; - CefRegisterExtension("v8/app", app_code, - new ClientAppExtensionHandler(this)); - - // Execute delegate callbacks. - RenderDelegateSet::iterator it = render_delegates_.begin(); - for (; it != render_delegates_.end(); ++it) - (*it)->OnWebKitInitialized(this); -} - -void ClientApp::OnContextCreated(CefRefPtr browser, - CefRefPtr frame, - CefRefPtr context) { - // Execute delegate callbacks. - RenderDelegateSet::iterator it = render_delegates_.begin(); - for (; it != render_delegates_.end(); ++it) - (*it)->OnContextCreated(this, browser, frame, context); -} - -void ClientApp::OnContextReleased(CefRefPtr browser, - CefRefPtr frame, - CefRefPtr context) { - // Execute delegate callbacks. - RenderDelegateSet::iterator it = render_delegates_.begin(); - for (; it != render_delegates_.end(); ++it) - (*it)->OnContextReleased(this, browser, frame, context); - - // Remove any JavaScript callbacks registered for the context that has been - // released. - if (!callback_map_.empty()) { - CallbackMap::iterator it = callback_map_.begin(); - for (; it != callback_map_.end();) { - if (it->second.first->IsSame(context)) - callback_map_.erase(it++); - else - ++it; - } - } -} - -void ClientApp::OnFocusedNodeChanged(CefRefPtr browser, - CefRefPtr frame, - CefRefPtr node) { - // Execute delegate callbacks. - RenderDelegateSet::iterator it = render_delegates_.begin(); - for (; it != render_delegates_.end(); ++it) - (*it)->OnFocusedNodeChanged(this, browser, frame, node); -} - -bool ClientApp::OnProcessMessageReceived( - CefRefPtr browser, - CefProcessId source_process, - CefRefPtr message) { - ASSERT(source_process == PID_BROWSER); - - bool handled = false; - - // Execute delegate callbacks. - RenderDelegateSet::iterator it = render_delegates_.begin(); - for (; it != render_delegates_.end() && !handled; ++it) { - handled = (*it)->OnProcessMessageReceived(this, browser, source_process, - message); - } - - if (handled) - return true; - - // Execute the registered JavaScript callback if any. - if (!callback_map_.empty()) { - CefString message_name = message->GetName(); - CallbackMap::const_iterator it = callback_map_.find( - std::make_pair(message_name.ToString(), - browser->GetIdentifier())); - if (it != callback_map_.end()) { - // Enter the context. - it->second.first->Enter(); - - CefV8ValueList arguments; - - // First argument is the message name. - arguments.push_back(CefV8Value::CreateString(message_name)); - - // Second argument is the list of message arguments. - CefRefPtr list = message->GetArgumentList(); - CefRefPtr args = CefV8Value::CreateArray(list->GetSize()); - SetList(list, args); - arguments.push_back(args); - - // Execute the callback. - CefRefPtr retval = - it->second.second->ExecuteFunction(NULL, arguments); - if (retval.get()) { - if (retval->IsBool()) - handled = retval->GetBoolValue(); - } - - // Exit the context. - it->second.first->Exit(); - } - } - - return handled; -} diff --git a/tests/cefclient/client_app.h b/tests/cefclient/client_app.h deleted file mode 100644 index 2a5e955aa..000000000 --- a/tests/cefclient/client_app.h +++ /dev/null @@ -1,157 +0,0 @@ -// 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. - -#ifndef CEF_TESTS_CEFCLIENT_CLIENT_APP_H_ -#define CEF_TESTS_CEFCLIENT_CLIENT_APP_H_ -#pragma once - -#include -#include -#include -#include -#include -#include "include/cef_app.h" - -class ClientApp : public CefApp, - public CefBrowserProcessHandler, - public CefProxyHandler, - public CefRenderProcessHandler { - public: - // Interface for renderer delegates. All RenderDelegates must be returned via - // CreateRenderDelegates. Do not perform work in the RenderDelegate - // constructor. - class RenderDelegate : public virtual CefBase { - public: - // Called when WebKit is initialized. Used to register V8 extensions. - virtual void OnWebKitInitialized(CefRefPtr app) { - }; - - // Called when a V8 context is created. Used to create V8 window bindings - // and set message callbacks. RenderDelegates should check for unique URLs - // to avoid interfering with each other. - virtual void OnContextCreated(CefRefPtr app, - CefRefPtr browser, - CefRefPtr frame, - CefRefPtr context) { - }; - - // Called when a V8 context is released. Used to clean up V8 window - // bindings. RenderDelegates should check for unique URLs to avoid - // interfering with each other. - virtual void OnContextReleased(CefRefPtr app, - CefRefPtr browser, - CefRefPtr frame, - CefRefPtr context) { - }; - - // Called when the focused node in a frame has changed. - virtual void OnFocusedNodeChanged(CefRefPtr app, - CefRefPtr browser, - CefRefPtr frame, - CefRefPtr node) { - } - - // Called when a process message is received. Return true if the message was - // handled and should not be passed on to other handlers. RenderDelegates - // should check for unique message names to avoid interfering with each - // other. - virtual bool OnProcessMessageReceived( - CefRefPtr app, - CefRefPtr browser, - CefProcessId source_process, - CefRefPtr message) { - return false; - } - }; - - typedef std::set > RenderDelegateSet; - - ClientApp(); - - // Set the proxy configuration. Should only be called during initialization. - void SetProxyConfig(cef_proxy_type_t proxy_type, - const CefString& proxy_config) { - proxy_type_ = proxy_type; - proxy_config_ = proxy_config; - } - - // Set a JavaScript callback for the specified |message_name| and |browser_id| - // combination. Will automatically be removed when the associated context is - // released. Callbacks can also be set in JavaScript using the - // app.setMessageCallback function. - void SetMessageCallback(const std::string& message_name, - int browser_id, - CefRefPtr context, - CefRefPtr function); - - // Removes the JavaScript callback for the specified |message_name| and - // |browser_id| combination. Returns true if a callback was removed. Callbacks - // can also be removed in JavaScript using the app.removeMessageCallback - // function. - bool RemoveMessageCallback(const std::string& message_name, - int browser_id); - - private: - // Creates all of the RenderDelegate objects. Implemented in - // client_app_delegates. - static void CreateRenderDelegates(RenderDelegateSet& delegates); - - // Registers custom schemes. Implemented in client_app_delegates. - static void RegisterCustomSchemes(CefRefPtr registrar, - std::vector& cookiable_schemes); - - // CefApp methods. - virtual void OnRegisterCustomSchemes( - CefRefPtr registrar) OVERRIDE { - RegisterCustomSchemes(registrar, cookieable_schemes_); - } - virtual CefRefPtr GetBrowserProcessHandler() - OVERRIDE { return this; } - virtual CefRefPtr GetRenderProcessHandler() - OVERRIDE { return this; } - - // CefBrowserProcessHandler methods. - virtual CefRefPtr GetProxyHandler() OVERRIDE { return this; } - virtual void OnContextInitialized(); - - // CefProxyHandler methods. - virtual void GetProxyForUrl(const CefString& url, - CefProxyInfo& proxy_info) OVERRIDE; - - // CefRenderProcessHandler methods. - virtual void OnWebKitInitialized() OVERRIDE; - virtual void OnContextCreated(CefRefPtr browser, - CefRefPtr frame, - CefRefPtr context) OVERRIDE; - virtual void OnContextReleased(CefRefPtr browser, - CefRefPtr frame, - CefRefPtr context) OVERRIDE; - virtual void OnFocusedNodeChanged(CefRefPtr browser, - CefRefPtr frame, - CefRefPtr node) OVERRIDE; - virtual bool OnProcessMessageReceived( - CefRefPtr browser, - CefProcessId source_process, - CefRefPtr message) OVERRIDE; - - // Proxy configuration. - cef_proxy_type_t proxy_type_; - CefString proxy_config_; - - // Map of message callbacks. - typedef std::map, - std::pair, CefRefPtr > > - CallbackMap; - CallbackMap callback_map_; - - // Set of supported RenderDelegates. - RenderDelegateSet render_delegates_; - - // Schemes that will be registered with the global cookie manager. - std::vector cookieable_schemes_; - - IMPLEMENT_REFCOUNTING(ClientApp); -}; - -#endif // CEF_TESTS_CEFCLIENT_CLIENT_APP_H_ diff --git a/tests/cefclient/client_app_delegates.cpp b/tests/cefclient/client_app_delegates.cpp deleted file mode 100644 index 586ebe0d1..000000000 --- a/tests/cefclient/client_app_delegates.cpp +++ /dev/null @@ -1,17 +0,0 @@ -// 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 "cefclient/client_app.h" -#include "cefclient/client_renderer.h" - -// static -void ClientApp::CreateRenderDelegates(RenderDelegateSet& delegates) { - client_renderer::CreateRenderDelegates(delegates); -} - -// static -void ClientApp::RegisterCustomSchemes( - CefRefPtr registrar, - std::vector& cookiable_schemes) { -} diff --git a/tests/cefclient/client_handler.cpp b/tests/cefclient/client_handler.cpp index 58c2185cb..01a43a7d0 100644 --- a/tests/cefclient/client_handler.cpp +++ b/tests/cefclient/client_handler.cpp @@ -48,27 +48,8 @@ bool ClientHandler::OnProcessMessageReceived( CefRefPtr browser, CefProcessId source_process, CefRefPtr message) { - // Check for messages from the client renderer. - std::string message_name = message->GetName(); - if (message_name == client_renderer::kFocusedNodeChangedMessage) { - // A message is sent from ClientRenderDelegate to tell us whether the - // currently focused DOM node is editable. Use of |m_bFocusOnEditableField| - // is redundant with CefKeyEvent.focus_on_editable_field in OnPreKeyEvent - // but is useful for demonstration purposes. - m_bFocusOnEditableField = message->GetArgumentList()->GetBool(0); - return true; - } - bool handled = false; - - // Execute delegate callbacks. - ProcessMessageDelegateSet::iterator it = process_message_delegates_.begin(); - for (; it != process_message_delegates_.end() && !handled; ++it) { - handled = (*it)->OnProcessMessageReceived(this, browser, source_process, - message); - } - - return handled; + return false; } void ClientHandler::OnBeforeContextMenu( diff --git a/tests/cefclient/client_renderer.cpp b/tests/cefclient/client_renderer.cpp deleted file mode 100644 index f292fc086..000000000 --- a/tests/cefclient/client_renderer.cpp +++ /dev/null @@ -1,48 +0,0 @@ -#include "cefclient/client_renderer.h" - -#include -#include - -#include "include/cef_dom.h" -#include "cefclient/util.h" - -namespace client_renderer { - -const char kFocusedNodeChangedMessage[] = "ClientRenderer.FocusedNodeChanged"; - -namespace { - -class ClientRenderDelegate : public ClientApp::RenderDelegate { - public: - ClientRenderDelegate() - : last_node_is_editable_(false) { - } - - virtual void OnFocusedNodeChanged(CefRefPtr app, - CefRefPtr browser, - CefRefPtr frame, - CefRefPtr node) OVERRIDE { - bool is_editable = (node.get() && node->IsEditable()); - if (is_editable != last_node_is_editable_) { - // Notify the browser of the change in focused element type. - last_node_is_editable_ = is_editable; - CefRefPtr message = - CefProcessMessage::Create(kFocusedNodeChangedMessage); - message->GetArgumentList()->SetBool(0, is_editable); - browser->SendProcessMessage(PID_BROWSER, message); - } - } - - private: - bool last_node_is_editable_; - - IMPLEMENT_REFCOUNTING(ClientRenderDelegate); -}; - -} // namespace - -void CreateRenderDelegates(ClientApp::RenderDelegateSet& delegates) { - delegates.insert(new ClientRenderDelegate); -} - -} // namespace client_renderer diff --git a/tests/cefclient/client_renderer.h b/tests/cefclient/client_renderer.h deleted file mode 100644 index 37b08408d..000000000 --- a/tests/cefclient/client_renderer.h +++ /dev/null @@ -1,22 +0,0 @@ -// 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. - -#ifndef CEF_TESTS_CEFCLIENT_CLIENT_RENDERER_H_ -#define CEF_TESTS_CEFCLIENT_CLIENT_RENDERER_H_ -#pragma once - -#include "include/cef_base.h" -#include "cefclient/client_app.h" - -namespace client_renderer { - -// Message sent when the focused node changes. -extern const char kFocusedNodeChangedMessage[]; - -// Create the render delegate. -void CreateRenderDelegates(ClientApp::RenderDelegateSet& delegates); - -} // namespace client_renderer - -#endif // CEF_TESTS_CEFCLIENT_CLIENT_RENDERER_H_ diff --git a/tests/cefclient/main_mac.mm b/tests/cefclient/main_mac.mm index 364a8d83e..8e9375c9a 100644 --- a/tests/cefclient/main_mac.mm +++ b/tests/cefclient/main_mac.mm @@ -12,7 +12,7 @@ int main(int argc, char* argv[]) { NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; CefMainArgs mainArgs(argc, argv); - CefRefPtr app(new ClientApp); + CefRefPtr app; int exit_code = CefExecuteProcess(mainArgs, app.get()); if (exit_code >= 0){ diff --git a/tests/cefclient/process_helper_mac.cpp b/tests/cefclient/process_helper_mac.cpp index c0d8dec63..2d3c27f7a 100644 --- a/tests/cefclient/process_helper_mac.cpp +++ b/tests/cefclient/process_helper_mac.cpp @@ -1,8 +1,7 @@ #include "include/cef_app.h" -#include "cefclient/client_app.h" int main(int argc, char* argv[]) { CefMainArgs main_args(argc, argv); - CefRefPtr app(new ClientApp); + CefRefPtr app; return CefExecuteProcess(main_args, app); // Execute the secondary process. }