Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(982)

Unified Diff: third_party/WebKit/Source/platform/FrameViewBase.h

Issue 2843693003: Move methods from FrameViewBase to FrameView. (Closed)
Patch Set: address comments Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: third_party/WebKit/Source/platform/FrameViewBase.h
diff --git a/third_party/WebKit/Source/platform/FrameViewBase.h b/third_party/WebKit/Source/platform/FrameViewBase.h
index c403350ca44ee55ad0961b36699b583018dc77dd..ab3d186f8bacf77d4b8fd90908f021f21a8023f8 100644
--- a/third_party/WebKit/Source/platform/FrameViewBase.h
+++ b/third_party/WebKit/Source/platform/FrameViewBase.h
@@ -32,70 +32,73 @@
#include "platform/geometry/FloatPoint.h"
#include "platform/geometry/IntRect.h"
#include "platform/heap/Handle.h"
-#include "platform/wtf/Forward.h"
namespace blink {
-class Event;
-
-// The FrameViewBase class serves as a base class for FrameView, Scrollbar, and
-// PluginView.
-//
-// FrameViewBases are connected in a hierarchy, with the restriction that
-// plugins and scrollbars are always leaves of the tree. Only FrameView can have
-// children (and therefore the FrameViewBase class has no concept of children).
-class PLATFORM_EXPORT FrameViewBase
- : public GarbageCollectedFinalized<FrameViewBase> {
+// The FrameViewBase class is the parent of Scrollbar.
+// TODO(joelhockey): Move core/paint/ScrollbarManager to platform/scroll
+// and use it to replace this class.
+class PLATFORM_EXPORT FrameViewBase : public GarbageCollectedMixin {
public:
- FrameViewBase();
- virtual ~FrameViewBase();
-
- int X() const { return FrameRect().X(); }
- int Y() const { return FrameRect().Y(); }
- int Width() const { return FrameRect().Width(); }
- int Height() const { return FrameRect().Height(); }
- IntSize Size() const { return FrameRect().Size(); }
- IntPoint Location() const { return FrameRect().Location(); }
-
- virtual void SetFrameRect(const IntRect& frame_rect) {
- frame_rect_ = frame_rect;
- }
- const IntRect& FrameRect() const { return frame_rect_; }
-
- void Resize(int w, int h) { SetFrameRect(IntRect(X(), Y(), w, h)); }
- void Resize(const IntSize& s) { SetFrameRect(IntRect(Location(), s)); }
-
- bool IsSelfVisible() const {
- return self_visible_;
- } // Whether or not we have been explicitly marked as visible or not.
- bool IsParentVisible() const {
- return parent_visible_;
- } // Whether or not our parent is visible.
- bool IsVisible() const {
- return self_visible_ && parent_visible_;
- } // Whether or not we are actually visible.
- virtual void SetParentVisible(bool visible) { parent_visible_ = visible; }
- void SetSelfVisible(bool v) { self_visible_ = v; }
+ FrameViewBase(){};
+ virtual ~FrameViewBase(){};
+
+ virtual IntPoint Location() const = 0;
virtual bool IsFrameView() const { return false; }
virtual bool IsRemoteFrameView() const { return false; }
- virtual bool IsPluginView() const { return false; }
- virtual bool IsPluginContainer() const { return false; }
- virtual bool IsScrollbar() const { return false; }
- virtual void SetParent(FrameViewBase*);
- FrameViewBase* Parent() const { return parent_; }
- FrameViewBase* Root() const;
+ virtual void SetParent(FrameViewBase*) = 0;
+ virtual FrameViewBase* Parent() const = 0;
- virtual void HandleEvent(Event*) {}
+ // TODO(joelhockey): Remove this from FrameViewBase once FrameView children
+ // use FrameOrPlugin rather than FrameViewBase. This method does not apply to
+ // scrollbars.
+ virtual void SetParentVisible(bool visible) {}
// ConvertFromRootFrame must be in FrameViewBase rather than FrameView
// to be visible to Scrollbar::ConvertFromRootFrame and
// RemoteFrameView::UpdateRemoteViewportIntersection. The related
// ConvertFromContainingFrameViewBase must be declared locally to be visible.
- IntRect ConvertFromRootFrame(const IntRect&) const;
- IntPoint ConvertFromRootFrame(const IntPoint&) const;
- FloatPoint ConvertFromRootFrame(const FloatPoint&) const;
+ IntRect ConvertFromRootFrame(const IntRect& rect_in_root_frame) const {
+ if (const FrameViewBase* parent_frame_view_base = Parent()) {
+ IntRect parent_rect =
+ parent_frame_view_base->ConvertFromRootFrame(rect_in_root_frame);
+ return ConvertFromContainingFrameViewBase(parent_rect);
+ }
+ return rect_in_root_frame;
+ }
+
+ IntPoint ConvertFromRootFrame(const IntPoint& point_in_root_frame) const {
+ if (const FrameViewBase* parent_frame_view_base = Parent()) {
+ IntPoint parent_point =
+ parent_frame_view_base->ConvertFromRootFrame(point_in_root_frame);
+ return ConvertFromContainingFrameViewBase(parent_point);
+ }
+ return point_in_root_frame;
+ }
+
+ FloatPoint ConvertFromRootFrame(const FloatPoint& point_in_root_frame) const {
+ // FrameViewBase / windows are required to be IntPoint aligned, but we may
+ // need to convert FloatPoint values within them (eg. for event
+ // co-ordinates).
+ IntPoint floored_point = FlooredIntPoint(point_in_root_frame);
+ FloatPoint parent_point = ConvertFromRootFrame(floored_point);
+ FloatSize window_fraction = point_in_root_frame - floored_point;
+ // Use linear interpolation handle any fractional value (eg. for iframes
+ // subject to a transform beyond just a simple translation).
+ // FIXME: Add FloatPoint variants of all co-ordinate space conversion APIs.
+ if (!window_fraction.IsEmpty()) {
+ const int kFactor = 1000;
+ IntPoint parent_line_end = ConvertFromRootFrame(
+ floored_point + RoundedIntSize(window_fraction.ScaledBy(kFactor)));
+ FloatSize parent_fraction =
+ (parent_line_end - parent_point).ScaledBy(1.0f / kFactor);
+ parent_point.Move(parent_fraction);
+ }
+ return parent_point;
+ }
+
// TODO(joelhockey): Change all these to pure virtual functions
// Once RemoteFrameView no longer inherits from FrameViewBase.
virtual IntRect ConvertFromContainingFrameViewBase(
@@ -109,21 +112,9 @@ class PLATFORM_EXPORT FrameViewBase
return parent_point;
}
- virtual void FrameRectsChanged() {}
+ virtual void FrameRectsChanged() { NOTREACHED(); }
- virtual void GeometryMayHaveChanged() {}
-
- // Notifies this frameviewbase that it will no longer be receiving events.
- virtual void EventListenersRemoved() {}
-
- DECLARE_VIRTUAL_TRACE();
virtual void Dispose() {}
-
- private:
- Member<FrameViewBase> parent_;
- IntRect frame_rect_;
- bool self_visible_;
- bool parent_visible_;
};
} // namespace blink

Powered by Google App Engine
This is Rietveld 408576698