#include "content/public/browser/navigation_details.h"
#include "content/public/browser/notification_service.h"
#include "content/public/browser/notification_types.h"
+#include "content/public/browser/render_frame_host.h"
#include "content/public/browser/render_process_host.h"
#include "content/public/browser/render_view_host.h"
#include "content/public/browser/resource_request_details.h"
#include "extensions/browser/view_type_utils.h"
#include "net/base/net_errors.h"
+using content::ResourceType;
+
namespace GetFrame = extensions::api::web_navigation::GetFrame;
namespace GetAllFrames = extensions::api::web_navigation::GetAllFrames;
namespace extensions {
-#if !defined(OS_ANDROID)
-
namespace helpers = web_navigation_api_helpers;
namespace keys = web_navigation_api_constants;
namespace web_navigation = api::web_navigation;
WebNavigationEventRouter::PendingWebContents::PendingWebContents()
: source_web_contents(NULL),
- source_frame_id(0),
- source_frame_is_main_frame(false),
+ source_frame_host(NULL),
target_web_contents(NULL),
target_url() {
}
WebNavigationEventRouter::PendingWebContents::PendingWebContents(
content::WebContents* source_web_contents,
- int64 source_frame_id,
- bool source_frame_is_main_frame,
+ content::RenderFrameHost* source_frame_host,
content::WebContents* target_web_contents,
const GURL& target_url)
: source_web_contents(source_web_contents),
- source_frame_id(source_frame_id),
- source_frame_is_main_frame(source_frame_is_main_frame),
+ source_frame_host(source_frame_host),
target_web_contents(target_web_contents),
target_url(target_url) {
}
const FrameNavigationState& frame_navigation_state =
tab_observer->frame_navigation_state();
- FrameNavigationState::FrameID frame_id(
- details->source_render_frame_id,
- details->source_web_contents->GetRenderViewHost());
- if (!frame_navigation_state.CanSendEvents(frame_id))
+ content::RenderFrameHost* frame_host = content::RenderFrameHost::FromID(
+ details->source_web_contents->GetRenderProcessHost()->GetID(),
+ details->source_render_frame_id);
+ if (!frame_navigation_state.CanSendEvents(frame_host))
return;
// If the WebContents isn't yet inserted into a tab strip, we need to delay
// the extension event until the WebContents is fully initialized.
if (details->not_yet_in_tabstrip) {
pending_web_contents_[details->target_web_contents] =
- PendingWebContents(
- details->source_web_contents,
- details->source_render_frame_id,
- frame_navigation_state.IsMainFrame(frame_id),
- details->target_web_contents,
- details->target_url);
+ PendingWebContents(details->source_web_contents,
+ frame_host,
+ details->target_web_contents,
+ details->target_url);
} else {
helpers::DispatchOnCreatedNavigationTarget(
details->source_web_contents,
details->target_web_contents->GetBrowserContext(),
- details->source_render_frame_id,
- frame_navigation_state.IsMainFrame(frame_id),
+ frame_host,
details->target_web_contents,
details->target_url);
}
const FrameNavigationState& frame_navigation_state =
tab_observer->frame_navigation_state();
- FrameNavigationState::FrameID frame_id(
- iter->second.source_frame_id,
- iter->second.source_web_contents->GetRenderViewHost());
- if (frame_navigation_state.CanSendEvents(frame_id)) {
+ if (frame_navigation_state.CanSendEvents(iter->second.source_frame_host)) {
helpers::DispatchOnCreatedNavigationTarget(
iter->second.source_web_contents,
iter->second.target_web_contents->GetBrowserContext(),
- iter->second.source_frame_id,
- iter->second.source_frame_is_main_frame,
+ iter->second.source_frame_host,
iter->second.target_web_contents,
iter->second.target_url);
}
}
}
+void WebNavigationTabObserver::RenderFrameDeleted(
+ content::RenderFrameHost* render_frame_host) {
+ content::RenderViewHost* render_view_host =
+ render_frame_host->GetRenderViewHost();
+ if (render_view_host != render_view_host_ &&
+ render_view_host != pending_render_view_host_) {
+ return;
+ }
+ if (navigation_state_.CanSendEvents(render_frame_host) &&
+ !navigation_state_.GetNavigationCompleted(render_frame_host)) {
+ helpers::DispatchOnErrorOccurred(
+ web_contents(),
+ render_frame_host,
+ navigation_state_.GetUrl(render_frame_host),
+ net::ERR_ABORTED);
+ }
+ navigation_state_.FrameDetached(render_frame_host);
+}
+
void WebNavigationTabObserver::RenderViewDeleted(
content::RenderViewHost* render_view_host) {
if (render_view_host == render_view_host_) {
} else {
return;
}
- SendErrorEvents(
- web_contents(), render_view_host, FrameNavigationState::FrameID());
+ SendErrorEvents(web_contents(), render_view_host, NULL);
}
void WebNavigationTabObserver::AboutToNavigateRenderView(
render_view_host_ = render_view_host;
} else if (render_view_host != render_view_host_) {
if (pending_render_view_host_) {
- SendErrorEvents(web_contents(),
- pending_render_view_host_,
- FrameNavigationState::FrameID());
+ SendErrorEvents(web_contents(), pending_render_view_host_, NULL);
}
pending_render_view_host_ = render_view_host;
}
}
void WebNavigationTabObserver::DidStartProvisionalLoadForFrame(
- int64 frame_num,
- int64 parent_frame_num,
- bool is_main_frame,
+ content::RenderFrameHost* render_frame_host,
const GURL& validated_url,
bool is_error_page,
- bool is_iframe_srcdoc,
- content::RenderViewHost* render_view_host) {
+ bool is_iframe_srcdoc) {
+ content::RenderViewHost* render_view_host =
+ render_frame_host->GetRenderViewHost();
DVLOG(2) << "DidStartProvisionalLoad("
<< "render_view_host=" << render_view_host
- << ", frame_num=" << frame_num
+ << ", frame_num=" << render_frame_host->GetRoutingID()
<< ", url=" << validated_url << ")";
if (!render_view_host_)
render_view_host_ = render_view_host;
render_view_host != pending_render_view_host_)
return;
- FrameNavigationState::FrameID frame_id(frame_num, render_view_host);
- FrameNavigationState::FrameID parent_frame_id(
- parent_frame_num, render_view_host);
-
- navigation_state_.TrackFrame(frame_id,
- parent_frame_id,
- validated_url,
- is_main_frame,
- is_error_page,
- is_iframe_srcdoc);
+ navigation_state_.TrackFrame(
+ render_frame_host, validated_url, is_error_page, is_iframe_srcdoc);
- if (!navigation_state_.CanSendEvents(frame_id))
+ if (!navigation_state_.CanSendEvents(render_frame_host))
return;
helpers::DispatchOnBeforeNavigate(
web_contents(),
- render_view_host->GetProcess()->GetID(),
- frame_num,
- is_main_frame,
- parent_frame_num,
- navigation_state_.IsMainFrame(parent_frame_id),
- navigation_state_.GetUrl(frame_id));
+ render_frame_host,
+ navigation_state_.GetUrl(render_frame_host));
}
void WebNavigationTabObserver::DidCommitProvisionalLoadForFrame(
- int64 frame_num,
- const base::string16& frame_unique_name,
- bool is_main_frame,
+ content::RenderFrameHost* render_frame_host,
const GURL& url,
- content::PageTransition transition_type,
- content::RenderViewHost* render_view_host) {
+ content::PageTransition transition_type) {
+ content::RenderViewHost* render_view_host =
+ render_frame_host->GetRenderViewHost();
DVLOG(2) << "DidCommitProvisionalLoad("
<< "render_view_host=" << render_view_host
- << ", frame_num=" << frame_num
+ << ", frame_num=" << render_frame_host->GetRoutingID()
<< ", url=" << url << ")";
if (render_view_host != render_view_host_ &&
render_view_host != pending_render_view_host_)
return;
- FrameNavigationState::FrameID frame_id(frame_num, render_view_host);
bool is_reference_fragment_navigation =
- IsReferenceFragmentNavigation(frame_id, url);
+ IsReferenceFragmentNavigation(render_frame_host, url);
bool is_history_state_modification =
- navigation_state_.GetNavigationCommitted(frame_id);
+ navigation_state_.GetNavigationCommitted(render_frame_host);
- if (is_main_frame && render_view_host_ == render_view_host) {
+ if (!render_frame_host->GetParent() &&
+ render_view_host_ == render_view_host) {
// Changing the reference fragment or the history state using
// history.pushState or history.replaceState does not cancel on-going
// iframe navigations.
if (!is_reference_fragment_navigation && !is_history_state_modification)
- SendErrorEvents(web_contents(), render_view_host_, frame_id);
+ SendErrorEvents(web_contents(), render_view_host_, render_frame_host);
if (pending_render_view_host_) {
- SendErrorEvents(web_contents(),
- pending_render_view_host_,
- FrameNavigationState::FrameID());
+ SendErrorEvents(web_contents(), pending_render_view_host_, NULL);
pending_render_view_host_ = NULL;
}
} else if (pending_render_view_host_ == render_view_host) {
- SendErrorEvents(
- web_contents(), render_view_host_, FrameNavigationState::FrameID());
+ SendErrorEvents(web_contents(), render_view_host_, NULL);
render_view_host_ = pending_render_view_host_;
pending_render_view_host_ = NULL;
}
// Update the URL as it might have changed.
- navigation_state_.UpdateFrame(frame_id, url);
- navigation_state_.SetNavigationCommitted(frame_id);
+ navigation_state_.UpdateFrame(render_frame_host, url);
+ navigation_state_.SetNavigationCommitted(render_frame_host);
- if (!navigation_state_.CanSendEvents(frame_id))
+ if (!navigation_state_.CanSendEvents(render_frame_host))
return;
if (is_reference_fragment_navigation) {
helpers::DispatchOnCommitted(
web_navigation::OnReferenceFragmentUpdated::kEventName,
web_contents(),
- frame_num,
- is_main_frame,
- navigation_state_.GetUrl(frame_id),
+ render_frame_host,
+ navigation_state_.GetUrl(render_frame_host),
transition_type);
} else if (is_history_state_modification) {
helpers::DispatchOnCommitted(
web_navigation::OnHistoryStateUpdated::kEventName,
web_contents(),
- frame_num,
- is_main_frame,
- navigation_state_.GetUrl(frame_id),
+ render_frame_host,
+ navigation_state_.GetUrl(render_frame_host),
transition_type);
} else {
- if (navigation_state_.GetIsServerRedirected(frame_id)) {
+ if (navigation_state_.GetIsServerRedirected(render_frame_host)) {
transition_type = static_cast<content::PageTransition>(
transition_type | content::PAGE_TRANSITION_SERVER_REDIRECT);
}
- helpers::DispatchOnCommitted(
- web_navigation::OnCommitted::kEventName,
- web_contents(),
- frame_num,
- is_main_frame,
- navigation_state_.GetUrl(frame_id),
- transition_type);
+ helpers::DispatchOnCommitted(web_navigation::OnCommitted::kEventName,
+ web_contents(),
+ render_frame_host,
+ navigation_state_.GetUrl(render_frame_host),
+ transition_type);
}
}
void WebNavigationTabObserver::DidFailProvisionalLoad(
- int64 frame_num,
- const base::string16& frame_unique_id,
- bool is_main_frame,
+ content::RenderFrameHost* render_frame_host,
const GURL& validated_url,
int error_code,
- const base::string16& error_description,
- content::RenderViewHost* render_view_host) {
+ const base::string16& error_description) {
+ content::RenderViewHost* render_view_host =
+ render_frame_host->GetRenderViewHost();
DVLOG(2) << "DidFailProvisionalLoad("
<< "render_view_host=" << render_view_host
- << ", frame_num=" << frame_num
+ << ", frame_num=" << render_frame_host->GetRoutingID()
<< ", url=" << validated_url << ")";
if (render_view_host != render_view_host_ &&
render_view_host != pending_render_view_host_)
stop_tracking_frames = true;
}
- FrameNavigationState::FrameID frame_id(frame_num, render_view_host);
- if (navigation_state_.CanSendEvents(frame_id)) {
+ if (navigation_state_.CanSendEvents(render_frame_host)) {
helpers::DispatchOnErrorOccurred(
web_contents(),
- render_view_host->GetProcess()->GetID(),
- navigation_state_.GetUrl(frame_id),
- frame_num,
- is_main_frame,
+ render_frame_host,
+ navigation_state_.GetUrl(render_frame_host),
error_code);
}
- navigation_state_.SetErrorOccurredInFrame(frame_id);
+ navigation_state_.SetErrorOccurredInFrame(render_frame_host);
if (stop_tracking_frames) {
- navigation_state_.StopTrackingFramesInRVH(render_view_host,
- FrameNavigationState::FrameID());
+ navigation_state_.StopTrackingFramesInRVH(render_view_host, NULL);
}
}
void WebNavigationTabObserver::DocumentLoadedInFrame(
- int64 frame_num,
- content::RenderViewHost* render_view_host) {
+ content::RenderFrameHost* render_frame_host) {
+ content::RenderViewHost* render_view_host =
+ render_frame_host->GetRenderViewHost();
DVLOG(2) << "DocumentLoadedInFrame("
<< "render_view_host=" << render_view_host
- << ", frame_num=" << frame_num << ")";
+ << ", frame_num=" << render_frame_host->GetRoutingID() << ")";
if (render_view_host != render_view_host_)
return;
- FrameNavigationState::FrameID frame_id(frame_num, render_view_host);
- if (!navigation_state_.CanSendEvents(frame_id))
+ if (!navigation_state_.CanSendEvents(render_frame_host))
return;
- navigation_state_.SetParsingFinished(frame_id);
- helpers::DispatchOnDOMContentLoaded(web_contents(),
- navigation_state_.GetUrl(frame_id),
- navigation_state_.IsMainFrame(frame_id),
- frame_num);
+ navigation_state_.SetParsingFinished(render_frame_host);
+ helpers::DispatchOnDOMContentLoaded(
+ web_contents(),
+ render_frame_host,
+ navigation_state_.GetUrl(render_frame_host));
- if (!navigation_state_.GetNavigationCompleted(frame_id))
+ if (!navigation_state_.GetNavigationCompleted(render_frame_host))
return;
// The load might already have finished by the time we finished parsing. For
// compatibility reasons, we artifically delay the load completed signal until
// after parsing was completed.
helpers::DispatchOnCompleted(web_contents(),
- navigation_state_.GetUrl(frame_id),
- navigation_state_.IsMainFrame(frame_id),
- frame_num);
+ render_frame_host,
+ navigation_state_.GetUrl(render_frame_host));
}
void WebNavigationTabObserver::DidFinishLoad(
- int64 frame_num,
- const GURL& validated_url,
- bool is_main_frame,
- content::RenderViewHost* render_view_host) {
+ content::RenderFrameHost* render_frame_host,
+ const GURL& validated_url) {
+ content::RenderViewHost* render_view_host =
+ render_frame_host->GetRenderViewHost();
DVLOG(2) << "DidFinishLoad("
<< "render_view_host=" << render_view_host
- << ", frame_num=" << frame_num
+ << ", frame_num=" << render_frame_host->GetRoutingID()
<< ", url=" << validated_url << ")";
if (render_view_host != render_view_host_)
return;
- FrameNavigationState::FrameID frame_id(frame_num, render_view_host);
// When showing replacement content, we might get load signals for frames
// that weren't reguarly loaded.
- if (!navigation_state_.IsValidFrame(frame_id))
+ if (!navigation_state_.IsValidFrame(render_frame_host))
return;
- navigation_state_.SetNavigationCompleted(frame_id);
- if (!navigation_state_.CanSendEvents(frame_id))
+ navigation_state_.SetNavigationCompleted(render_frame_host);
+ if (!navigation_state_.CanSendEvents(render_frame_host))
return;
- DCHECK(
- navigation_state_.GetUrl(frame_id) == validated_url ||
- (navigation_state_.GetUrl(frame_id) == GURL(content::kAboutSrcDocURL) &&
- validated_url == GURL(url::kAboutBlankURL)))
+ DCHECK(navigation_state_.GetUrl(render_frame_host) == validated_url ||
+ (navigation_state_.GetUrl(render_frame_host) ==
+ GURL(content::kAboutSrcDocURL) &&
+ validated_url == GURL(url::kAboutBlankURL)))
<< "validated URL is " << validated_url << " but we expected "
- << navigation_state_.GetUrl(frame_id);
- DCHECK_EQ(navigation_state_.IsMainFrame(frame_id), is_main_frame);
+ << navigation_state_.GetUrl(render_frame_host);
// The load might already have finished by the time we finished parsing. For
// compatibility reasons, we artifically delay the load completed signal until
// after parsing was completed.
- if (!navigation_state_.GetParsingFinished(frame_id))
+ if (!navigation_state_.GetParsingFinished(render_frame_host))
return;
helpers::DispatchOnCompleted(web_contents(),
- navigation_state_.GetUrl(frame_id),
- is_main_frame,
- frame_num);
+ render_frame_host,
+ navigation_state_.GetUrl(render_frame_host));
}
void WebNavigationTabObserver::DidFailLoad(
- int64 frame_num,
+ content::RenderFrameHost* render_frame_host,
const GURL& validated_url,
- bool is_main_frame,
int error_code,
- const base::string16& error_description,
- content::RenderViewHost* render_view_host) {
+ const base::string16& error_description) {
+ content::RenderViewHost* render_view_host =
+ render_frame_host->GetRenderViewHost();
DVLOG(2) << "DidFailLoad("
<< "render_view_host=" << render_view_host
- << ", frame_num=" << frame_num
+ << ", frame_num=" << render_frame_host->GetRoutingID()
<< ", url=" << validated_url << ")";
if (render_view_host != render_view_host_)
return;
- FrameNavigationState::FrameID frame_id(frame_num, render_view_host);
// When showing replacement content, we might get load signals for frames
// that weren't reguarly loaded.
- if (!navigation_state_.IsValidFrame(frame_id))
+ if (!navigation_state_.IsValidFrame(render_frame_host))
return;
- if (navigation_state_.CanSendEvents(frame_id)) {
+ if (navigation_state_.CanSendEvents(render_frame_host)) {
helpers::DispatchOnErrorOccurred(
web_contents(),
- render_view_host->GetProcess()->GetID(),
- navigation_state_.GetUrl(frame_id),
- frame_num,
- is_main_frame,
+ render_frame_host,
+ navigation_state_.GetUrl(render_frame_host),
error_code);
}
- navigation_state_.SetErrorOccurredInFrame(frame_id);
+ navigation_state_.SetErrorOccurredInFrame(render_frame_host);
}
void WebNavigationTabObserver::DidGetRedirectForResourceRequest(
content::RenderViewHost* render_view_host,
const content::ResourceRedirectDetails& details) {
- if (details.resource_type != ResourceType::MAIN_FRAME &&
- details.resource_type != ResourceType::SUB_FRAME) {
+ if (details.resource_type != content::RESOURCE_TYPE_MAIN_FRAME &&
+ details.resource_type != content::RESOURCE_TYPE_SUB_FRAME) {
return;
}
- FrameNavigationState::FrameID frame_id(details.render_frame_id,
- render_view_host);
- navigation_state_.SetIsServerRedirected(frame_id);
+ content::RenderFrameHost* render_frame_host =
+ content::RenderFrameHost::FromID(render_view_host->GetProcess()->GetID(),
+ details.render_frame_id);
+ navigation_state_.SetIsServerRedirected(render_frame_host);
}
void WebNavigationTabObserver::DidOpenRequestedURL(
WindowOpenDisposition disposition,
content::PageTransition transition,
int64 source_frame_num) {
- FrameNavigationState::FrameID frame_id(source_frame_num, render_view_host_);
- if (!navigation_state_.CanSendEvents(frame_id))
+ content::RenderFrameHost* render_frame_host =
+ content::RenderFrameHost::FromID(render_view_host_->GetProcess()->GetID(),
+ source_frame_num);
+ if (!navigation_state_.CanSendEvents(render_frame_host))
return;
// We only send the onCreatedNavigationTarget if we end up creating a new
disposition != OFF_THE_RECORD)
return;
- helpers::DispatchOnCreatedNavigationTarget(
- web_contents(),
- new_contents->GetBrowserContext(),
- source_frame_num,
- navigation_state_.IsMainFrame(frame_id),
- new_contents,
- url);
-}
-
-void WebNavigationTabObserver::FrameDetached(
- content::RenderViewHost* render_view_host,
- int64 frame_num) {
- if (render_view_host != render_view_host_ &&
- render_view_host != pending_render_view_host_) {
- return;
- }
- FrameNavigationState::FrameID frame_id(frame_num, render_view_host);
- if (navigation_state_.CanSendEvents(frame_id) &&
- !navigation_state_.GetNavigationCompleted(frame_id)) {
- helpers::DispatchOnErrorOccurred(
- web_contents(),
- render_view_host->GetProcess()->GetID(),
- navigation_state_.GetUrl(frame_id),
- frame_num,
- navigation_state_.IsMainFrame(frame_id),
- net::ERR_ABORTED);
- }
- navigation_state_.FrameDetached(frame_id);
+ helpers::DispatchOnCreatedNavigationTarget(web_contents(),
+ new_contents->GetBrowserContext(),
+ render_frame_host,
+ new_contents,
+ url);
}
void WebNavigationTabObserver::WebContentsDestroyed() {
g_tab_observer.Get().erase(web_contents());
registrar_.RemoveAll();
- SendErrorEvents(web_contents(), NULL, FrameNavigationState::FrameID());
+ SendErrorEvents(web_contents(), NULL, NULL);
}
void WebNavigationTabObserver::SendErrorEvents(
content::WebContents* web_contents,
content::RenderViewHost* render_view_host,
- FrameNavigationState::FrameID id_to_skip) {
- for (FrameNavigationState::const_iterator frame = navigation_state_.begin();
- frame != navigation_state_.end(); ++frame) {
- if (!navigation_state_.GetNavigationCompleted(*frame) &&
- navigation_state_.CanSendEvents(*frame) &&
- *frame != id_to_skip &&
- (!render_view_host || frame->render_view_host == render_view_host)) {
- navigation_state_.SetErrorOccurredInFrame(*frame);
+ content::RenderFrameHost* frame_host_to_skip) {
+ for (FrameNavigationState::const_iterator it = navigation_state_.begin();
+ it != navigation_state_.end();
+ ++it) {
+ if (!navigation_state_.GetNavigationCompleted(*it) &&
+ navigation_state_.CanSendEvents(*it) && *it != frame_host_to_skip &&
+ (!render_view_host || (*it)->GetRenderViewHost() == render_view_host)) {
+ navigation_state_.SetErrorOccurredInFrame(*it);
helpers::DispatchOnErrorOccurred(
- web_contents,
- frame->render_view_host->GetProcess()->GetID(),
- navigation_state_.GetUrl(*frame),
- frame->frame_num,
- navigation_state_.IsMainFrame(*frame),
- net::ERR_ABORTED);
+ web_contents, *it, navigation_state_.GetUrl(*it), net::ERR_ABORTED);
}
}
if (render_view_host)
- navigation_state_.StopTrackingFramesInRVH(render_view_host, id_to_skip);
+ navigation_state_.StopTrackingFramesInRVH(render_view_host,
+ frame_host_to_skip);
}
// See also NavigationController::IsURLInPageNavigation.
bool WebNavigationTabObserver::IsReferenceFragmentNavigation(
- FrameNavigationState::FrameID frame_id,
+ content::RenderFrameHost* render_frame_host,
const GURL& url) {
- GURL existing_url = navigation_state_.GetUrl(frame_id);
+ GURL existing_url = navigation_state_.GetUrl(render_frame_host);
if (existing_url == url)
return false;
const FrameNavigationState& frame_navigation_state =
observer->frame_navigation_state();
- if (frame_id == 0)
- frame_id = frame_navigation_state.GetMainFrameID().frame_num;
-
- content::RenderViewHost* render_view_host =
- observer->GetRenderViewHostInProcess(process_id);
- if (!render_view_host)
- return true;
-
- FrameNavigationState::FrameID internal_frame_id(frame_id, render_view_host);
- if (!frame_navigation_state.IsValidFrame(internal_frame_id))
+ content::RenderFrameHost* render_frame_host =
+ frame_id == 0 ? frame_navigation_state.GetLastCommittedMainFrameHost()
+ : content::RenderFrameHost::FromID(process_id, frame_id);
+ if (!frame_navigation_state.IsValidFrame(render_frame_host))
return true;
- GURL frame_url = frame_navigation_state.GetUrl(internal_frame_id);
+ GURL frame_url = frame_navigation_state.GetUrl(render_frame_host);
if (!frame_navigation_state.IsValidUrl(frame_url))
return true;
GetFrame::Results::Details frame_details;
frame_details.url = frame_url.spec();
frame_details.error_occurred =
- frame_navigation_state.GetErrorOccurredInFrame(internal_frame_id);
- FrameNavigationState::FrameID parent_frame_id =
- frame_navigation_state.GetParentFrameID(internal_frame_id);
- frame_details.parent_frame_id = helpers::GetFrameId(
- frame_navigation_state.IsMainFrame(parent_frame_id),
- parent_frame_id.frame_num);
+ frame_navigation_state.GetErrorOccurredInFrame(render_frame_host);
+ frame_details.parent_frame_id =
+ helpers::GetFrameId(render_frame_host->GetParent());
results_ = GetFrame::Results::Create(frame_details);
return true;
}
std::vector<linked_ptr<GetAllFrames::Results::DetailsType> > result_list;
for (FrameNavigationState::const_iterator it = navigation_state.begin();
it != navigation_state.end(); ++it) {
- FrameNavigationState::FrameID frame_id = *it;
- FrameNavigationState::FrameID parent_frame_id =
- navigation_state.GetParentFrameID(frame_id);
- GURL frame_url = navigation_state.GetUrl(frame_id);
+ GURL frame_url = navigation_state.GetUrl(*it);
if (!navigation_state.IsValidUrl(frame_url))
continue;
linked_ptr<GetAllFrames::Results::DetailsType> frame(
new GetAllFrames::Results::DetailsType());
frame->url = frame_url.spec();
- frame->frame_id = helpers::GetFrameId(
- navigation_state.IsMainFrame(frame_id), frame_id.frame_num);
- frame->parent_frame_id = helpers::GetFrameId(
- navigation_state.IsMainFrame(parent_frame_id),
- parent_frame_id.frame_num);
- frame->process_id = frame_id.render_view_host->GetProcess()->GetID();
- frame->error_occurred = navigation_state.GetErrorOccurredInFrame(frame_id);
+ frame->frame_id = helpers::GetFrameId(*it);
+ frame->parent_frame_id = helpers::GetFrameId((*it)->GetParent());
+ frame->process_id = (*it)->GetRenderViewHost()->GetProcess()->GetID();
+ frame->error_occurred = navigation_state.GetErrorOccurredInFrame(*it);
result_list.push_back(frame);
}
results_ = GetAllFrames::Results::Create(result_list);
EventRouter::Get(browser_context_)->UnregisterObserver(this);
}
-#endif // OS_ANDROID
-
} // namespace extensions