1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "extensions/renderer/lazy_background_page_native_handler.h"
8 #include "content/public/renderer/render_view.h"
9 #include "extensions/common/extension_messages.h"
10 #include "extensions/common/manifest_handlers/background_info.h"
11 #include "extensions/renderer/extension_helper.h"
12 #include "extensions/renderer/script_context.h"
14 namespace extensions
{
16 LazyBackgroundPageNativeHandler::LazyBackgroundPageNativeHandler(
17 ScriptContext
* context
)
18 : ObjectBackedNativeHandler(context
) {
20 "IncrementKeepaliveCount",
21 base::Bind(&LazyBackgroundPageNativeHandler::IncrementKeepaliveCount
,
22 base::Unretained(this)));
24 "DecrementKeepaliveCount",
25 base::Bind(&LazyBackgroundPageNativeHandler::DecrementKeepaliveCount
,
26 base::Unretained(this)));
29 void LazyBackgroundPageNativeHandler::IncrementKeepaliveCount(
30 const v8::FunctionCallbackInfo
<v8::Value
>& args
) {
33 content::RenderView
* render_view
= context()->GetRenderView();
34 if (IsContextLazyBackgroundPage(render_view
, context()->extension())) {
35 render_view
->Send(new ExtensionHostMsg_IncrementLazyKeepaliveCount(
36 render_view
->GetRoutingID()));
40 void LazyBackgroundPageNativeHandler::DecrementKeepaliveCount(
41 const v8::FunctionCallbackInfo
<v8::Value
>& args
) {
44 content::RenderView
* render_view
= context()->GetRenderView();
45 if (IsContextLazyBackgroundPage(render_view
, context()->extension())) {
46 render_view
->Send(new ExtensionHostMsg_DecrementLazyKeepaliveCount(
47 render_view
->GetRoutingID()));
51 bool LazyBackgroundPageNativeHandler::IsContextLazyBackgroundPage(
52 content::RenderView
* render_view
,
53 const Extension
* extension
) {
57 ExtensionHelper
* helper
= ExtensionHelper::Get(render_view
);
58 return (extension
&& BackgroundInfo::HasLazyBackgroundPage(extension
) &&
59 helper
->view_type() == VIEW_TYPE_EXTENSION_BACKGROUND_PAGE
);
62 } // namespace extensions