| Index: webkit/api/src/InspectorClientImpl.cpp
|
| ===================================================================
|
| --- webkit/api/src/InspectorClientImpl.cpp (revision 30163)
|
| +++ webkit/api/src/InspectorClientImpl.cpp (working copy)
|
| @@ -1,231 +1,262 @@
|
| -// Copyright (c) 2006-2008 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.
|
| +/*
|
| + * Copyright (C) 2009 Google Inc. All rights reserved.
|
| + *
|
| + * Redistribution and use in source and binary forms, with or without
|
| + * modification, are permitted provided that the following conditions are
|
| + * met:
|
| + *
|
| + * * Redistributions of source code must retain the above copyright
|
| + * notice, this list of conditions and the following disclaimer.
|
| + * * Redistributions in binary form must reproduce the above
|
| + * copyright notice, this list of conditions and the following disclaimer
|
| + * in the documentation and/or other materials provided with the
|
| + * distribution.
|
| + * * Neither the name of Google Inc. nor the names of its
|
| + * contributors may be used to endorse or promote products derived from
|
| + * this software without specific prior written permission.
|
| + *
|
| + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
| + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
| + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
| + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
| + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
| + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
| + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
| + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
| + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
| + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
| + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
| + */
|
|
|
| #include "config.h"
|
| +#include "InspectorClientImpl.h"
|
|
|
| #include "DOMWindow.h"
|
| #include "FloatRect.h"
|
| #include "InspectorController.h"
|
| #include "Page.h"
|
| #include "Settings.h"
|
| +#include "WebRect.h"
|
| +#include "WebURL.h"
|
| +#include "WebURLRequest.h"
|
| +#include "WebViewClient.h"
|
| #include <wtf/Vector.h>
|
| -#undef LOG
|
|
|
| -#include "webkit/api/public/WebRect.h"
|
| -#include "webkit/api/public/WebURL.h"
|
| -#include "webkit/api/public/WebURLRequest.h"
|
| -#include "webkit/api/public/WebViewClient.h"
|
| -#include "webkit/glue/glue_util.h"
|
| -#include "webkit/glue/inspector_client_impl.h"
|
| +// FIXME: Remove this once WebDevToolsAgentImpl and WebViewImpl move out of glue/.
|
| #include "webkit/glue/webdevtoolsagent_impl.h"
|
| -#include "webkit/glue/webkit_glue.h"
|
| #include "webkit/glue/webview_impl.h"
|
|
|
| using namespace WebCore;
|
|
|
| -using WebKit::WebRect;
|
| -using WebKit::WebSize;
|
| -using WebKit::WebURLRequest;
|
| +namespace WebKit {
|
|
|
| -static const float kDefaultInspectorXPos = 10;
|
| -static const float kDefaultInspectorYPos = 50;
|
| -static const float kDefaultInspectorHeight = 640;
|
| -static const float kDefaultInspectorWidth = 480;
|
| -
|
| InspectorClientImpl::InspectorClientImpl(WebViewImpl* webView)
|
| - : inspected_web_view_(webView) {
|
| - ASSERT(inspected_web_view_);
|
| + : m_inspectedWebView(webView)
|
| +{
|
| + ASSERT(m_inspectedWebView);
|
| }
|
|
|
| -InspectorClientImpl::~InspectorClientImpl() {
|
| +InspectorClientImpl::~InspectorClientImpl()
|
| +{
|
| }
|
|
|
| -void InspectorClientImpl::inspectorDestroyed() {
|
| - // Our lifetime is bound to the WebViewImpl.
|
| +void InspectorClientImpl::inspectorDestroyed()
|
| +{
|
| + // Our lifetime is bound to the WebViewImpl.
|
| }
|
|
|
| -Page* InspectorClientImpl::createPage() {
|
| - // This method should never be called in Chrome as inspector front-end lives
|
| - // in a separate process.
|
| - ASSERT_NOT_REACHED();
|
| - return NULL;
|
| +Page* InspectorClientImpl::createPage()
|
| +{
|
| + // This method should never be called in Chrome as inspector front-end lives
|
| + // in a separate process.
|
| + ASSERT_NOT_REACHED();
|
| + return 0;
|
| }
|
|
|
| -void InspectorClientImpl::showWindow() {
|
| - ASSERT(inspected_web_view_->GetWebDevToolsAgentImpl());
|
| - InspectorController* inspector =
|
| - inspected_web_view_->page()->inspectorController();
|
| - inspector->setWindowVisible(true);
|
| +void InspectorClientImpl::showWindow()
|
| +{
|
| + ASSERT(m_inspectedWebView->GetWebDevToolsAgentImpl());
|
| + m_inspectedWebView->page()->inspectorController()->setWindowVisible(true);
|
| }
|
|
|
| -void InspectorClientImpl::closeWindow() {
|
| - if (inspected_web_view_->page())
|
| - inspected_web_view_->page()->inspectorController()->setWindowVisible(false);
|
| +void InspectorClientImpl::closeWindow()
|
| +{
|
| + if (m_inspectedWebView->page())
|
| + m_inspectedWebView->page()->inspectorController()->setWindowVisible(false);
|
| }
|
|
|
| -bool InspectorClientImpl::windowVisible() {
|
| - ASSERT(inspected_web_view_->GetWebDevToolsAgentImpl());
|
| - return false;
|
| +bool InspectorClientImpl::windowVisible()
|
| +{
|
| + ASSERT(m_inspectedWebView->GetWebDevToolsAgentImpl());
|
| + return false;
|
| }
|
|
|
| -void InspectorClientImpl::attachWindow() {
|
| - // TODO(jackson): Implement this
|
| +void InspectorClientImpl::attachWindow()
|
| +{
|
| + // FIXME: Implement this
|
| }
|
|
|
| -void InspectorClientImpl::detachWindow() {
|
| - // TODO(jackson): Implement this
|
| +void InspectorClientImpl::detachWindow()
|
| +{
|
| + // FIXME: Implement this
|
| }
|
|
|
| -void InspectorClientImpl::setAttachedWindowHeight(unsigned int height) {
|
| - // TODO(dglazkov): Implement this
|
| - notImplemented();
|
| +void InspectorClientImpl::setAttachedWindowHeight(unsigned int height)
|
| +{
|
| + // FIXME: Implement this
|
| + notImplemented();
|
| }
|
|
|
| -static void invalidateNodeBoundingRect(WebViewImpl* web_view) {
|
| - // TODO(ojan): http://b/1143996 Is it important to just invalidate the rect
|
| - // of the node region given that this is not on a critical codepath?
|
| - // In order to do so, we'd have to take scrolling into account.
|
| - const WebSize& size = web_view->size();
|
| - WebRect damaged_rect(0, 0, size.width, size.height);
|
| - if (web_view->client())
|
| - web_view->client()->didInvalidateRect(damaged_rect);
|
| +static void invalidateNodeBoundingRect(WebViewImpl* webView)
|
| +{
|
| + // FIXME: Is it important to just invalidate the rect of the node region
|
| + // given that this is not on a critical codepath? In order to do so, we'd
|
| + // have to take scrolling into account.
|
| + const WebSize& size = webView->size();
|
| + WebRect damagedRect(0, 0, size.width, size.height);
|
| + if (webView->client())
|
| + webView->client()->didInvalidateRect(damagedRect);
|
| }
|
|
|
| -void InspectorClientImpl::highlight(Node* node) {
|
| - // InspectorController does the actually tracking of the highlighted node
|
| - // and the drawing of the highlight. Here we just make sure to invalidate
|
| - // the rects of the old and new nodes.
|
| - hideHighlight();
|
| +void InspectorClientImpl::highlight(Node* node)
|
| +{
|
| + // InspectorController does the actually tracking of the highlighted node
|
| + // and the drawing of the highlight. Here we just make sure to invalidate
|
| + // the rects of the old and new nodes.
|
| + hideHighlight();
|
| }
|
|
|
| -void InspectorClientImpl::hideHighlight() {
|
| - // TODO: Should be able to invalidate a smaller rect.
|
| - invalidateNodeBoundingRect(inspected_web_view_);
|
| +void InspectorClientImpl::hideHighlight()
|
| +{
|
| + // FIXME: able to invalidate a smaller rect.
|
| + invalidateNodeBoundingRect(m_inspectedWebView);
|
| }
|
|
|
| -void InspectorClientImpl::inspectedURLChanged(const String& newURL) {
|
| - // TODO(jackson): Implement this
|
| +void InspectorClientImpl::inspectedURLChanged(const String& newURL)
|
| +{
|
| + // FIXME: Implement this
|
| }
|
|
|
| -String InspectorClientImpl::localizedStringsURL() {
|
| - notImplemented();
|
| - return String();
|
| +String InspectorClientImpl::localizedStringsURL()
|
| +{
|
| + notImplemented();
|
| + return String();
|
| }
|
|
|
| -String InspectorClientImpl::hiddenPanels() {
|
| - // Enumerate tabs that are currently disabled.
|
| - return "scripts,profiles,databases";
|
| +String InspectorClientImpl::hiddenPanels()
|
| +{
|
| + // Enumerate tabs that are currently disabled.
|
| + return "scripts,profiles,databases";
|
| }
|
|
|
| -void InspectorClientImpl::populateSetting(
|
| - const String& key,
|
| - InspectorController::Setting& setting) {
|
| - LoadSettings();
|
| - if (settings_->contains(key))
|
| - setting = settings_->get(key);
|
| +void InspectorClientImpl::populateSetting(const String& key, InspectorController::Setting& setting)
|
| +{
|
| + loadSettings();
|
| + if (m_settings->contains(key))
|
| + setting = m_settings->get(key);
|
| }
|
|
|
| -void InspectorClientImpl::storeSetting(
|
| - const String& key,
|
| - const InspectorController::Setting& setting) {
|
| - LoadSettings();
|
| - settings_->set(key, setting);
|
| - SaveSettings();
|
| +void InspectorClientImpl::storeSetting(const String& key, const InspectorController::Setting& setting)
|
| +{
|
| + loadSettings();
|
| + m_settings->set(key, setting);
|
| + saveSettings();
|
| }
|
|
|
| -void InspectorClientImpl::removeSetting(const String& key) {
|
| - LoadSettings();
|
| - settings_->remove(key);
|
| - SaveSettings();
|
| +void InspectorClientImpl::removeSetting(const String& key)
|
| +{
|
| + loadSettings();
|
| + m_settings->remove(key);
|
| + saveSettings();
|
| }
|
|
|
| -void InspectorClientImpl::inspectorWindowObjectCleared() {
|
| - notImplemented();
|
| +void InspectorClientImpl::inspectorWindowObjectCleared()
|
| +{
|
| + notImplemented();
|
| }
|
|
|
| -void InspectorClientImpl::LoadSettings() {
|
| - if (settings_)
|
| - return;
|
| +void InspectorClientImpl::loadSettings()
|
| +{
|
| + if (m_settings)
|
| + return;
|
|
|
| - settings_.set(new SettingsMap);
|
| - String data = webkit_glue::WebStringToString(
|
| - inspected_web_view_->inspectorSettings());
|
| - if (data.isEmpty())
|
| - return;
|
| + m_settings.set(new SettingsMap);
|
| + String data = m_inspectedWebView->inspectorSettings();
|
| + if (data.isEmpty())
|
| + return;
|
|
|
| - Vector<String> entries;
|
| - data.split("\n", entries);
|
| - for (Vector<String>::iterator it = entries.begin();
|
| - it != entries.end(); ++it) {
|
| - Vector<String> tokens;
|
| - it->split(":", tokens);
|
| - if (tokens.size() != 3)
|
| - continue;
|
| + Vector<String> entries;
|
| + data.split("\n", entries);
|
| + for (Vector<String>::iterator it = entries.begin(); it != entries.end(); ++it) {
|
| + Vector<String> tokens;
|
| + it->split(":", tokens);
|
| + if (tokens.size() != 3)
|
| + continue;
|
|
|
| - String name = decodeURLEscapeSequences(tokens[0]);
|
| - String type = tokens[1];
|
| - InspectorController::Setting setting;
|
| - bool ok = true;
|
| - if (type == "string")
|
| - setting.set(decodeURLEscapeSequences(tokens[2]));
|
| - else if (type == "double")
|
| - setting.set(tokens[2].toDouble(&ok));
|
| - else if (type == "integer")
|
| - setting.set(static_cast<long>(tokens[2].toInt(&ok)));
|
| - else if (type == "boolean")
|
| - setting.set(tokens[2] == "true");
|
| - else
|
| - continue;
|
| + String name = decodeURLEscapeSequences(tokens[0]);
|
| + String type = tokens[1];
|
| + InspectorController::Setting setting;
|
| + bool ok = true;
|
| + if (type == "string")
|
| + setting.set(decodeURLEscapeSequences(tokens[2]));
|
| + else if (type == "double")
|
| + setting.set(tokens[2].toDouble(&ok));
|
| + else if (type == "integer")
|
| + setting.set(static_cast<long>(tokens[2].toInt(&ok)));
|
| + else if (type == "boolean")
|
| + setting.set(tokens[2] == "true");
|
| + else
|
| + continue;
|
|
|
| - if (ok)
|
| - settings_->set(name, setting);
|
| - }
|
| + if (ok)
|
| + m_settings->set(name, setting);
|
| + }
|
| }
|
|
|
| -void InspectorClientImpl::SaveSettings() {
|
| - String data;
|
| - for (SettingsMap::iterator it = settings_->begin(); it != settings_->end();
|
| - ++it) {
|
| - String entry;
|
| - InspectorController::Setting value = it->second;
|
| - String name = encodeWithURLEscapeSequences(it->first);
|
| - switch (value.type()) {
|
| - case InspectorController::Setting::StringType:
|
| - entry = String::format(
|
| - "%s:string:%s",
|
| - name.utf8().data(),
|
| - encodeWithURLEscapeSequences(value.string()).utf8().data());
|
| - break;
|
| - case InspectorController::Setting::DoubleType:
|
| - entry = String::format(
|
| - "%s:double:%f",
|
| - name.utf8().data(),
|
| - value.doubleValue());
|
| - break;
|
| - case InspectorController::Setting::IntegerType:
|
| - entry = String::format(
|
| - "%s:integer:%ld",
|
| - name.utf8().data(),
|
| - value.integerValue());
|
| - break;
|
| - case InspectorController::Setting::BooleanType:
|
| - entry = String::format("%s:boolean:%s",
|
| - name.utf8().data(),
|
| - value.booleanValue() ? "true" : "false");
|
| - break;
|
| - case InspectorController::Setting::StringVectorType:
|
| - notImplemented();
|
| - break;
|
| - default:
|
| - ASSERT_NOT_REACHED();
|
| - break;
|
| +void InspectorClientImpl::saveSettings()
|
| +{
|
| + String data;
|
| + for (SettingsMap::iterator it = m_settings->begin(); it != m_settings->end(); ++it) {
|
| + String entry;
|
| + InspectorController::Setting value = it->second;
|
| + String name = encodeWithURLEscapeSequences(it->first);
|
| + switch (value.type()) {
|
| + case InspectorController::Setting::StringType:
|
| + entry = String::format(
|
| + "%s:string:%s",
|
| + name.utf8().data(),
|
| + encodeWithURLEscapeSequences(value.string()).utf8().data());
|
| + break;
|
| + case InspectorController::Setting::DoubleType:
|
| + entry = String::format(
|
| + "%s:double:%f",
|
| + name.utf8().data(),
|
| + value.doubleValue());
|
| + break;
|
| + case InspectorController::Setting::IntegerType:
|
| + entry = String::format(
|
| + "%s:integer:%ld",
|
| + name.utf8().data(),
|
| + value.integerValue());
|
| + break;
|
| + case InspectorController::Setting::BooleanType:
|
| + entry = String::format("%s:boolean:%s",
|
| + name.utf8().data(),
|
| + value.booleanValue() ? "true" : "false");
|
| + break;
|
| + case InspectorController::Setting::StringVectorType:
|
| + notImplemented();
|
| + break;
|
| + default:
|
| + ASSERT_NOT_REACHED();
|
| + break;
|
| + }
|
| + data.append(entry);
|
| + data.append("\n");
|
| }
|
| - data.append(entry);
|
| - data.append("\n");
|
| - }
|
| - inspected_web_view_->setInspectorSettings(
|
| - webkit_glue::StringToWebString(data));
|
| - if (inspected_web_view_->client())
|
| - inspected_web_view_->client()->didUpdateInspectorSettings();
|
| + m_inspectedWebView->setInspectorSettings(data);
|
| + if (m_inspectedWebView->client())
|
| + m_inspectedWebView->client()->didUpdateInspectorSettings();
|
| }
|
| +
|
| +} // namespace WebKit
|
|
|