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

Side by Side Diff: chrome/browser/extensions/extension_function.h

Issue 8488012: Fix for management API related to escalated permissions disabled extensions (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: rebased again Created 9 years, 1 month 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
« no previous file with comments | « no previous file | chrome/browser/extensions/extension_function.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_H_ 5 #ifndef CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_H_
6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_H_ 6 #define CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_H_
7 #pragma once 7 #pragma once
8 8
9 #include <list> 9 #include <list>
10 #include <string> 10 #include <string>
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
135 // Helper method for ExtensionFunctionDeleteTraits. Deletes this object. 135 // Helper method for ExtensionFunctionDeleteTraits. Deletes this object.
136 virtual void Destruct() const = 0; 136 virtual void Destruct() const = 0;
137 137
138 // Derived classes should implement this method to do their work and return 138 // Derived classes should implement this method to do their work and return
139 // success/failure. 139 // success/failure.
140 virtual bool RunImpl() = 0; 140 virtual bool RunImpl() = 0;
141 141
142 // Sends the result back to the extension. 142 // Sends the result back to the extension.
143 virtual void SendResponse(bool success) = 0; 143 virtual void SendResponse(bool success) = 0;
144 144
145 // Common implementation for SenderResponse. 145 // Common implementation for SendResponse.
146 void SendResponseImpl(base::ProcessHandle process, 146 void SendResponseImpl(base::ProcessHandle process,
147 IPC::Message::Sender* ipc_sender, 147 IPC::Message::Sender* ipc_sender,
148 int routing_id, 148 int routing_id,
149 bool success); 149 bool success);
150 150
151 // Called when we receive an extension api request that is invalid in a way 151 // Called when we receive an extension api request that is invalid in a way
152 // that JSON validation in the renderer should have caught. This should never 152 // that JSON validation in the renderer should have caught. This should never
153 // happen and could be an attacker trying to exploit the browser, so we crash 153 // happen and could be an attacker trying to exploit the browser, so we crash
154 // the renderer instead. 154 // the renderer instead.
155 void HandleBadMessage(base::ProcessHandle process); 155 void HandleBadMessage(base::ProcessHandle process);
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after
333 base::WeakPtr<ChromeRenderMessageFilter> ipc_sender_; 333 base::WeakPtr<ChromeRenderMessageFilter> ipc_sender_;
334 int routing_id_; 334 int routing_id_;
335 335
336 scoped_refptr<const ExtensionInfoMap> extension_info_map_; 336 scoped_refptr<const ExtensionInfoMap> extension_info_map_;
337 }; 337 };
338 338
339 // Base class for an extension function that runs asynchronously *relative to 339 // Base class for an extension function that runs asynchronously *relative to
340 // the browser's UI thread*. 340 // the browser's UI thread*.
341 class AsyncExtensionFunction : public UIThreadExtensionFunction { 341 class AsyncExtensionFunction : public UIThreadExtensionFunction {
342 public: 342 public:
343 // A delegate for use in testing, to intercept the call to SendResponse.
344 class DelegateForTests {
345 public:
346 virtual void OnSendResponse(AsyncExtensionFunction* function,
347 bool success) = 0;
348 };
349
343 AsyncExtensionFunction(); 350 AsyncExtensionFunction();
351 virtual void SendResponse(bool success) OVERRIDE;
352
353 void set_test_delegate(DelegateForTests* delegate) {
354 delegate_ = delegate;
355 }
344 356
345 protected: 357 protected:
346 virtual ~AsyncExtensionFunction(); 358 virtual ~AsyncExtensionFunction();
359
360 DelegateForTests* delegate_;
347 }; 361 };
348 362
349 // A SyncExtensionFunction is an ExtensionFunction that runs synchronously 363 // A SyncExtensionFunction is an ExtensionFunction that runs synchronously
350 // *relative to the browser's UI thread*. Note that this has nothing to do with 364 // *relative to the browser's UI thread*. Note that this has nothing to do with
351 // running synchronously relative to the extension process. From the extension 365 // running synchronously relative to the extension process. From the extension
352 // process's point of view, the function is still asynchronous. 366 // process's point of view, the function is still asynchronous.
353 // 367 //
354 // This kind of function is convenient for implementing simple APIs that just 368 // This kind of function is convenient for implementing simple APIs that just
355 // need to interact with things on the browser UI thread. 369 // need to interact with things on the browser UI thread.
356 class SyncExtensionFunction : public UIThreadExtensionFunction { 370 class SyncExtensionFunction : public UIThreadExtensionFunction {
(...skipping 10 matching lines...) Expand all
367 public: 381 public:
368 SyncIOThreadExtensionFunction(); 382 SyncIOThreadExtensionFunction();
369 383
370 virtual void Run() OVERRIDE; 384 virtual void Run() OVERRIDE;
371 385
372 protected: 386 protected:
373 virtual ~SyncIOThreadExtensionFunction(); 387 virtual ~SyncIOThreadExtensionFunction();
374 }; 388 };
375 389
376 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_H_ 390 #endif // CHROME_BROWSER_EXTENSIONS_EXTENSION_FUNCTION_H_
OLDNEW
« no previous file with comments | « no previous file | chrome/browser/extensions/extension_function.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698