Commit 9e6b7c8a authored by Olivier Robin's avatar Olivier Robin Committed by Commit Bot

Create WebFramesManager public accessor

Bug: 851636
Cq-Include-Trybots: luci.chromium.try:ios-simulator-full-configs;master.tryserver.chromium.mac:ios-simulator-cronet
Change-Id: I73bedc40b204b00c09233efc38ba80805b5c04d0
Reviewed-on: https://chromium-review.googlesource.com/1184702
Commit-Queue: Olivier Robin <olivierrobin@chromium.org>
Reviewed-by: default avatarEugene But <eugenebut@chromium.org>
Reviewed-by: default avatarMike Dougherty <michaeldo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#585444}
parent f89aa2c1
......@@ -9,6 +9,7 @@
#include <vector>
#include "base/macros.h"
#import "ios/web/public/web_state/web_state_user_data.h"
namespace web {
......@@ -19,7 +20,7 @@ class WebFrame;
// NOTE: WebFrame objects should be used directly from this manager and not
// stored elsewhere for later use becase WebFrames are frequently replaced.
// For example, a navigation will invalidate the WebFrame object for that frame.
class WebFramesManager {
class WebFramesManager : public web::WebStateUserData<WebFramesManager> {
public:
// Returns a list of all the web frames associated with WebState.
// NOTE: Due to the asynchronous nature of renderer, this list may be
......@@ -31,7 +32,7 @@ class WebFramesManager {
// this object may be outdated.
virtual WebFrame* GetMainWebFrame() = 0;
virtual ~WebFramesManager() {}
~WebFramesManager() override {}
protected:
WebFramesManager() {}
......
......@@ -6,19 +6,19 @@
#define IOS_WEB_WEB_STATE_WEB_FRAMES_MANAGER_IMPL_H_
#include "ios/web/public/web_state/web_frames_manager.h"
#include "ios/web/public/web_state/web_state_user_data.h"
namespace web {
class WebFrame;
class WebFramesManagerImpl
: public WebFramesManager,
public web::WebStateUserData<WebFramesManagerImpl> {
class WebFramesManagerImpl : public WebFramesManager {
public:
~WebFramesManagerImpl() override;
explicit WebFramesManagerImpl(web::WebState* web_state);
static void CreateForWebState(WebState* web_state);
static WebFramesManagerImpl* FromWebState(WebState* web_state);
// Adds |frame| to the list of web frames associated with WebState.
void AddFrame(std::unique_ptr<WebFrame> frame);
// Removes the web frame with |frame_id|, if one exists, from the list of
......
......@@ -31,7 +31,19 @@ struct FrameIdMatcher {
namespace web {
DEFINE_WEB_STATE_USER_DATA_KEY(WebFramesManagerImpl);
// static
void WebFramesManagerImpl::CreateForWebState(WebState* web_state) {
DCHECK(web_state);
if (!FromWebState(web_state))
web_state->SetUserData(
UserDataKey(), base::WrapUnique(new WebFramesManagerImpl(web_state)));
}
// static
WebFramesManagerImpl* WebFramesManagerImpl::FromWebState(WebState* web_state) {
return static_cast<WebFramesManagerImpl*>(
WebFramesManager::FromWebState(web_state));
}
WebFramesManagerImpl::~WebFramesManagerImpl() = default;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment