123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- /*
- * Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies)
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Library General Public
- * License as published by the Free Software Foundation; either
- * version 2 of the License, or (at your option) any later version.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Library General Public License for more details.
- *
- * You should have received a copy of the GNU Library General Public License
- * along with this library; see the file COPYING.LIB. If not, write to
- * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- * Boston, MA 02110-1301, USA.
- */
- #include "config.h"
- #include "WebHitTestResult.h"
- #include "WebCoreArgumentCoders.h"
- #include <WebCore/Document.h>
- #include <WebCore/Frame.h>
- #include <WebCore/FrameView.h>
- #include <WebCore/HitTestResult.h>
- #include <WebCore/KURL.h>
- #include <WebCore/Node.h>
- #include <wtf/text/WTFString.h>
- using namespace WebCore;
- namespace WebKit {
- PassRefPtr<WebHitTestResult> WebHitTestResult::create(const WebHitTestResult::Data& hitTestResultData)
- {
- return adoptRef(new WebHitTestResult(hitTestResultData));
- }
- WebHitTestResult::Data::Data()
- {
- }
- WebHitTestResult::Data::Data(const HitTestResult& hitTestResult)
- : absoluteImageURL(hitTestResult.absoluteImageURL().string())
- , absolutePDFURL(hitTestResult.absolutePDFURL().string())
- , absoluteLinkURL(hitTestResult.absoluteLinkURL().string())
- , absoluteMediaURL(hitTestResult.absoluteMediaURL().string())
- , linkLabel(hitTestResult.textContent())
- , linkTitle(hitTestResult.titleDisplayString())
- , isContentEditable(hitTestResult.isContentEditable())
- , elementBoundingBox(elementBoundingBoxInWindowCoordinates(hitTestResult))
- , isScrollbar(hitTestResult.scrollbar())
- {
- }
- WebHitTestResult::Data::~Data()
- {
- }
- void WebHitTestResult::Data::encode(CoreIPC::ArgumentEncoder& encoder) const
- {
- encoder << absoluteImageURL;
- encoder << absolutePDFURL;
- encoder << absoluteLinkURL;
- encoder << absoluteMediaURL;
- encoder << linkLabel;
- encoder << linkTitle;
- encoder << isContentEditable;
- encoder << elementBoundingBox;
- encoder << isScrollbar;
- }
- bool WebHitTestResult::Data::decode(CoreIPC::ArgumentDecoder& decoder, WebHitTestResult::Data& hitTestResultData)
- {
- if (!decoder.decode(hitTestResultData.absoluteImageURL)
- || !decoder.decode(hitTestResultData.absolutePDFURL)
- || !decoder.decode(hitTestResultData.absoluteLinkURL)
- || !decoder.decode(hitTestResultData.absoluteMediaURL)
- || !decoder.decode(hitTestResultData.linkLabel)
- || !decoder.decode(hitTestResultData.linkTitle)
- || !decoder.decode(hitTestResultData.isContentEditable)
- || !decoder.decode(hitTestResultData.elementBoundingBox)
- || !decoder.decode(hitTestResultData.isScrollbar))
- return false;
- return true;
- }
- IntRect WebHitTestResult::Data::elementBoundingBoxInWindowCoordinates(const HitTestResult& hitTestResult)
- {
- Node* node = hitTestResult.innerNonSharedNode();
- if (!node)
- return IntRect();
- Frame* frame = node->document()->frame();
- if (!frame)
- return IntRect();
- FrameView* view = frame->view();
- if (!view)
- return IntRect();
- return view->contentsToWindow(node->pixelSnappedBoundingBox());
- }
- } // WebKit
|