// Copyright 2018 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. #ifndef CONTENT_BROWSER_SCOPED_ACTIVE_URL_H_ #define CONTENT_BROWSER_SCOPED_ACTIVE_URL_H_ #include "base/macros.h" class GURL; namespace url { class Origin; } // namespace url namespace content { class FrameTreeNode; class RenderFrameHost; class RenderFrameProxyHost; class RenderViewHost; // ScopedActiveURL calls ContentClient::SetActiveURL when constructed // and calls it again with empty arguments when destructed. class ScopedActiveURL { public: // Calls ContentClient::SetActiveURL with |active_url| and |top_origin| (to // set the crash keys). ScopedActiveURL(const GURL& active_url, const url::Origin& top_origin); // Convenience constructor, calculating |active_url| and |top_origin| based on // |frame|'s last committed origin and main frame. explicit ScopedActiveURL(RenderFrameHost* frame); // Convenience constructor, calculating |active_url| and |top_origin| based on // |proxy|'s last committed origin and main frame. explicit ScopedActiveURL(RenderFrameProxyHost* proxy); // Convenience constructor, calculating |active_url| and |top_origin| based on // the frame tree node of |view|'s main frame. explicit ScopedActiveURL(RenderViewHost* view); // Calls ContentClient::SetActiveURL with empty arguments (to reset the crash // keys). ~ScopedActiveURL(); private: explicit ScopedActiveURL(FrameTreeNode* node); DISALLOW_COPY_AND_ASSIGN(ScopedActiveURL); }; } // namespace content #endif // CONTENT_BROWSER_SCOPED_ACTIVE_URL_H_