// Copyright (c) 2017 GitHub, Inc. // Use of this source code is governed by the MIT license that can be // found in the LICENSE file. #ifndef ELECTRON_SHELL_BROWSER_NATIVE_BROWSER_VIEW_VIEWS_H_ #define ELECTRON_SHELL_BROWSER_NATIVE_BROWSER_VIEW_VIEWS_H_ #include #include #include "shell/browser/native_browser_view.h" #include "third_party/skia/include/core/SkRegion.h" namespace electron { class NativeBrowserViewViews : public NativeBrowserView { public: explicit NativeBrowserViewViews( InspectableWebContents* inspectable_web_contents); ~NativeBrowserViewViews() override; void SetAutoResizeProportions(const gfx::Size& window_size); void AutoResize(const gfx::Rect& new_window, int width_delta, int height_delta); uint8_t GetAutoResizeFlags() { return auto_resize_flags_; } // NativeBrowserView: void SetAutoResizeFlags(uint8_t flags) override; void SetBounds(const gfx::Rect& bounds) override; gfx::Rect GetBounds() override; void SetBackgroundColor(SkColor color) override; void UpdateDraggableRegions( const std::vector& regions) override; // WebContentsObserver: void RenderViewReady() override; SkRegion* draggable_region() const { return draggable_region_.get(); } private: void ResetAutoResizeProportions(); uint8_t auto_resize_flags_ = 0; bool auto_horizontal_proportion_set_ = false; float auto_horizontal_proportion_width_ = 0.; float auto_horizontal_proportion_left_ = 0.; bool auto_vertical_proportion_set_ = false; float auto_vertical_proportion_height_ = 0.; float auto_vertical_proportion_top_ = 0.; std::unique_ptr draggable_region_; }; } // namespace electron #endif // ELECTRON_SHELL_BROWSER_NATIVE_BROWSER_VIEW_VIEWS_H_