Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(49)

Side by Side Diff: chrome/renderer/extensions/dispatcher.cc

Issue 10694085: Refactor extension event distribution to use Values instead of JSON strings. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fixing memory leak in a test. Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/renderer/extensions/dispatcher.h" 5 #include "chrome/renderer/extensions/dispatcher.h"
6 6
7 #include "base/callback.h" 7 #include "base/callback.h"
8 #include "base/command_line.h" 8 #include "base/command_line.h"
9 #include "base/memory/scoped_ptr.h" 9 #include "base/memory/scoped_ptr.h"
10 #include "base/string_piece.h" 10 #include "base/string_piece.h"
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after
76 using WebKit::WebView; 76 using WebKit::WebView;
77 using content::RenderThread; 77 using content::RenderThread;
78 using content::RenderView; 78 using content::RenderView;
79 79
80 namespace extensions { 80 namespace extensions {
81 81
82 namespace { 82 namespace {
83 83
84 static const int64 kInitialExtensionIdleHandlerDelayMs = 5*1000; 84 static const int64 kInitialExtensionIdleHandlerDelayMs = 5*1000;
85 static const int64 kMaxExtensionIdleHandlerDelayMs = 5*60*1000; 85 static const int64 kMaxExtensionIdleHandlerDelayMs = 5*60*1000;
86 static const char kEventDispatchFunction[] = "Event.dispatchJSON"; 86 static const char kEventDispatchFunction[] = "Event.dispatchEvent";
87 static const char kOnUnloadEvent[] = "runtime.onSuspend"; 87 static const char kOnUnloadEvent[] = "runtime.onSuspend";
88 static const char kOnSuspendCanceledEvent[] = "runtime.onSuspendCanceled"; 88 static const char kOnSuspendCanceledEvent[] = "runtime.onSuspendCanceled";
89 89
90 class ChromeHiddenNativeHandler : public NativeHandler { 90 class ChromeHiddenNativeHandler : public NativeHandler {
91 public: 91 public:
92 ChromeHiddenNativeHandler() { 92 ChromeHiddenNativeHandler() {
93 RouteFunction("GetChromeHidden", 93 RouteFunction("GetChromeHidden",
94 base::Bind(&ChromeHiddenNativeHandler::GetChromeHidden, 94 base::Bind(&ChromeHiddenNativeHandler::GetChromeHidden,
95 base::Unretained(this))); 95 base::Unretained(this)));
96 } 96 }
(...skipping 919 matching lines...) Expand 10 before | Expand all | Expand 10 after
1016 } 1016 }
1017 1017
1018 void Dispatcher::OnUnload(const std::string& extension_id) { 1018 void Dispatcher::OnUnload(const std::string& extension_id) {
1019 // Dispatch the unload event. This doesn't go through the standard event 1019 // Dispatch the unload event. This doesn't go through the standard event
1020 // dispatch machinery because it requires special handling. We need to let 1020 // dispatch machinery because it requires special handling. We need to let
1021 // the browser know when we are starting and stopping the event dispatch, so 1021 // the browser know when we are starting and stopping the event dispatch, so
1022 // that it still considers the extension idle despite any activity the unload 1022 // that it still considers the extension idle despite any activity the unload
1023 // event creates. 1023 // event creates.
1024 ListValue args; 1024 ListValue args;
1025 args.Set(0, Value::CreateStringValue(kOnUnloadEvent)); 1025 args.Set(0, Value::CreateStringValue(kOnUnloadEvent));
1026 args.Set(1, Value::CreateStringValue("[]")); 1026 args.Set(1, new ListValue());
1027 v8_context_set_.DispatchChromeHiddenMethod( 1027 v8_context_set_.DispatchChromeHiddenMethod(
1028 extension_id, kEventDispatchFunction, args, NULL, GURL()); 1028 extension_id, kEventDispatchFunction, args, NULL, GURL());
1029 1029
1030 RenderThread::Get()->Send(new ExtensionHostMsg_UnloadAck(extension_id)); 1030 RenderThread::Get()->Send(new ExtensionHostMsg_UnloadAck(extension_id));
1031 } 1031 }
1032 1032
1033 void Dispatcher::OnCancelUnload(const std::string& extension_id) { 1033 void Dispatcher::OnCancelUnload(const std::string& extension_id) {
1034 ListValue args; 1034 ListValue args;
1035 args.Set(0, Value::CreateStringValue(kOnSuspendCanceledEvent)); 1035 args.Set(0, Value::CreateStringValue(kOnSuspendCanceledEvent));
1036 args.Set(1, Value::CreateStringValue("[]")); 1036 args.Set(1, new ListValue());
1037 v8_context_set_.DispatchChromeHiddenMethod( 1037 v8_context_set_.DispatchChromeHiddenMethod(
1038 extension_id, kEventDispatchFunction, args, NULL, GURL()); 1038 extension_id, kEventDispatchFunction, args, NULL, GURL());
1039 } 1039 }
1040 1040
1041 Feature::Context Dispatcher::ClassifyJavaScriptContext( 1041 Feature::Context Dispatcher::ClassifyJavaScriptContext(
1042 const std::string& extension_id, 1042 const std::string& extension_id,
1043 int extension_group, 1043 int extension_group,
1044 const ExtensionURLInfo& url_info) { 1044 const ExtensionURLInfo& url_info) {
1045 if (extension_group == EXTENSION_GROUP_CONTENT_SCRIPTS) { 1045 if (extension_group == EXTENSION_GROUP_CONTENT_SCRIPTS) {
1046 return extensions_.Contains(extension_id) ? 1046 return extensions_.Contains(extension_id) ?
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
1128 // we should abort. 1128 // we should abort.
1129 WebKit::WebFrame* frame = context->web_frame(); 1129 WebKit::WebFrame* frame = context->web_frame();
1130 ExtensionURLInfo url_info(frame->document().securityOrigin(), 1130 ExtensionURLInfo url_info(frame->document().securityOrigin(),
1131 UserScriptSlave::GetDataSourceURLForFrame(frame)); 1131 UserScriptSlave::GetDataSourceURLForFrame(frame));
1132 CHECK(!extensions_.IsSandboxedPage(url_info)); 1132 CHECK(!extensions_.IsSandboxedPage(url_info));
1133 1133
1134 return true; 1134 return true;
1135 } 1135 }
1136 1136
1137 } // namespace extensions 1137 } // namespace extensions
OLDNEW
« no previous file with comments | « chrome/browser/speech/speech_input_extension_manager.cc ('k') | chrome/renderer/resources/extensions/event.js » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698