diff options
Diffstat (limited to 'chrome/common')
295 files changed, 24780 insertions, 4740 deletions
diff --git a/chrome/common/about_handler.cc b/chrome/common/about_handler.cc index d2121b8..6e3e152 100644 --- a/chrome/common/about_handler.cc +++ b/chrome/common/about_handler.cc @@ -12,6 +12,7 @@ namespace chrome_about_handler { // chrome/renderer/about_handler.cc. const char* const about_urls[] = { chrome::kAboutCrashURL, + chrome::kAboutKillURL, chrome::kAboutHangURL, chrome::kAboutShorthangURL, NULL, diff --git a/chrome/common/appcache/appcache_dispatcher.h b/chrome/common/appcache/appcache_dispatcher.h index f88a38a..bec0d82 100644 --- a/chrome/common/appcache/appcache_dispatcher.h +++ b/chrome/common/appcache/appcache_dispatcher.h @@ -24,7 +24,7 @@ class AppCacheDispatcher : public IPC::Channel::Listener { AppCacheBackendProxy* backend_proxy() { return &backend_proxy_; } // IPC::Channel::Listener implementation - bool OnMessageReceived(const IPC::Message& msg); + virtual bool OnMessageReceived(const IPC::Message& msg); private: // Ipc message handlers diff --git a/chrome/common/autofill_messages.cc b/chrome/common/autofill_messages.cc new file mode 100644 index 0000000..80b43f3 --- /dev/null +++ b/chrome/common/autofill_messages.cc @@ -0,0 +1,104 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/common/common_param_traits.h" +#include "webkit/glue/form_data.h" +#include "webkit/glue/form_field.h" +#include "webkit/glue/password_form.h" +#include "webkit/glue/password_form_dom_manager.h" + +#define IPC_MESSAGE_IMPL +#include "chrome/common/autofill_messages.h" + +namespace IPC { + +void ParamTraits<webkit_glue::FormField>::Write(Message* m, + const param_type& p) { + WriteParam(m, p.label()); + WriteParam(m, p.name()); + WriteParam(m, p.value()); + WriteParam(m, p.form_control_type()); + WriteParam(m, p.max_length()); + WriteParam(m, p.is_autofilled()); + WriteParam(m, p.option_strings()); +} + +bool ParamTraits<webkit_glue::FormField>::Read(const Message* m, void** iter, + param_type* p) { + string16 label, name, value, form_control_type; + int max_length = 0; + bool is_autofilled; + std::vector<string16> options; + bool result = ReadParam(m, iter, &label); + result = result && ReadParam(m, iter, &name); + result = result && ReadParam(m, iter, &value); + result = result && ReadParam(m, iter, &form_control_type); + result = result && ReadParam(m, iter, &max_length); + result = result && ReadParam(m, iter, &is_autofilled); + result = result && ReadParam(m, iter, &options); + if (!result) + return false; + + p->set_label(label); + p->set_name(name); + p->set_value(value); + p->set_form_control_type(form_control_type); + p->set_max_length(max_length); + p->set_autofilled(is_autofilled); + p->set_option_strings(options); + return true; +} + +void ParamTraits<webkit_glue::FormField>::Log(const param_type& p, + std::string* l) { + l->append("<FormField>"); +} + +void ParamTraits<webkit_glue::FormData>::Write(Message* m, + const param_type& p) { + WriteParam(m, p.name); + WriteParam(m, p.method); + WriteParam(m, p.origin); + WriteParam(m, p.action); + WriteParam(m, p.user_submitted); + WriteParam(m, p.fields); +} + +bool ParamTraits<webkit_glue::FormData>::Read(const Message* m, void** iter, + param_type* p) { + return + ReadParam(m, iter, &p->name) && + ReadParam(m, iter, &p->method) && + ReadParam(m, iter, &p->origin) && + ReadParam(m, iter, &p->action) && + ReadParam(m, iter, &p->user_submitted) && + ReadParam(m, iter, &p->fields); +} + +void ParamTraits<webkit_glue::FormData>::Log(const param_type& p, + std::string* l) { + l->append("<FormData>"); +} + +void ParamTraits<webkit_glue::PasswordFormFillData>::Write( + Message* m, const param_type& p) { + WriteParam(m, p.basic_data); + WriteParam(m, p.additional_logins); + WriteParam(m, p.wait_for_username); +} + +bool ParamTraits<webkit_glue::PasswordFormFillData>::Read( + const Message* m, void** iter, param_type* r) { + return + ReadParam(m, iter, &r->basic_data) && + ReadParam(m, iter, &r->additional_logins) && + ReadParam(m, iter, &r->wait_for_username); +} + +void ParamTraits<webkit_glue::PasswordFormFillData>::Log(const param_type& p, + std::string* l) { + l->append("<PasswordFormFillData>"); +} + +} // namespace IPC diff --git a/chrome/common/autofill_messages.h b/chrome/common/autofill_messages.h new file mode 100644 index 0000000..4e2f9bc --- /dev/null +++ b/chrome/common/autofill_messages.h @@ -0,0 +1,125 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_COMMON_AUTOFILL_MESSAGES_H_ +#define CHROME_COMMON_AUTOFILL_MESSAGES_H_ +#pragma once + +#include <string> + +#include "ipc/ipc_message_macros.h" + +#define IPC_MESSAGE_START AutoFillMsgStart + +namespace webkit_glue { +class FormField; +struct FormData; +struct PasswordForm; +struct PasswordFormFillData; +} + +namespace IPC { + +template <> +struct ParamTraits<webkit_glue::FormField> { + typedef webkit_glue::FormField param_type; + static void Write(Message* m, const param_type& p); + static bool Read(const Message* m, void** iter, param_type* p); + static void Log(const param_type& p, std::string* l); +}; + + +// Traits for FormData structure to pack/unpack. +template <> +struct ParamTraits<webkit_glue::FormData> { + typedef webkit_glue::FormData param_type; + static void Write(Message* m, const param_type& p); + static bool Read(const Message* m, void** iter, param_type* p); + static void Log(const param_type& p, std::string* l); +}; + +template <> +struct ParamTraits<webkit_glue::PasswordFormFillData> { + typedef webkit_glue::PasswordFormFillData param_type; + static void Write(Message* m, const param_type& p); + static bool Read(const Message* m, void** iter, param_type* r); + static void Log(const param_type& p, std::string* l); +}; + +} // namespace IPC + +// AutoFill messages sent from the browser to the renderer. + +// Reply to the AutoFillHostMsg_QueryFormFieldAutoFill message with the +// AutoFill suggestions. +IPC_MESSAGE_ROUTED5(AutoFillMsg_SuggestionsReturned, + int /* id of the request message */, + std::vector<string16> /* names */, + std::vector<string16> /* labels */, + std::vector<string16> /* icons */, + std::vector<int> /* unique_ids */) + +// Reply to the AutoFillHostMsg_FillAutoFillFormData message with the +// AutoFill form data. +IPC_MESSAGE_ROUTED2(AutoFillMsg_FormDataFilled, + int /* id of the request message */, + webkit_glue::FormData /* form data */) + +// Fill a password form and prepare field autocomplete for multiple +// matching logins. +IPC_MESSAGE_ROUTED1(AutoFillMsg_FillPasswordForm, + webkit_glue::PasswordFormFillData) + + +// AutoFill messages sent from the renderer to the browser. + +// Notification that forms have been seen that are candidates for +// filling/submitting by the AutoFillManager. +IPC_MESSAGE_ROUTED1(AutoFillHostMsg_FormsSeen, + std::vector<webkit_glue::FormData> /* forms */) + +// Notification that password forms have been seen that are candidates for +// filling/submitting by the password manager. +IPC_MESSAGE_ROUTED1(AutoFillHostMsg_PasswordFormsFound, + std::vector<webkit_glue::PasswordForm> /* forms */) + +// Notification that initial layout has occurred and the following password +// forms are visible on the page (e.g. not set to display:none.) +IPC_MESSAGE_ROUTED1(AutoFillHostMsg_PasswordFormsVisible, + std::vector<webkit_glue::PasswordForm> /* forms */) + +// Notification that a form has been submitted. The user hit the button. +IPC_MESSAGE_ROUTED1(AutoFillHostMsg_FormSubmitted, + webkit_glue::FormData /* form */) + +// Queries the browser for AutoFill suggestions for a form input field. +IPC_MESSAGE_ROUTED3(AutoFillHostMsg_QueryFormFieldAutoFill, + int /* id of this message */, + webkit_glue::FormData /* the form */, + webkit_glue::FormField /* the form field */) + +// Sent when the popup with AutoFill suggestions for a form is shown. +IPC_MESSAGE_ROUTED0(AutoFillHostMsg_DidShowAutoFillSuggestions) + +// Instructs the browser to fill in the values for a form using AutoFill +// profile data. +IPC_MESSAGE_ROUTED4(AutoFillHostMsg_FillAutoFillFormData, + int /* id of this message */, + webkit_glue::FormData /* the form */, + webkit_glue::FormField /* the form field */, + int /* profile unique ID */) + +// Sent when a form is previewed or filled with AutoFill suggestions. +IPC_MESSAGE_ROUTED0(AutoFillHostMsg_DidFillAutoFillFormData) + +// Instructs the browser to remove the specified Autocomplete entry from the +// database. +IPC_MESSAGE_ROUTED2(AutoFillHostMsg_RemoveAutocompleteEntry, + string16 /* field name */, + string16 /* value */) + +// Instructs the browser to show the AutoFill dialog. +IPC_MESSAGE_ROUTED0(AutoFillHostMsg_ShowAutoFillDialog) + +#endif // CHROME_COMMON_AUTOFILL_MESSAGES_H_ diff --git a/chrome/common/automation_constants.h b/chrome/common/automation_constants.h index 6579776..c4aa683 100644 --- a/chrome/common/automation_constants.h +++ b/chrome/common/automation_constants.h @@ -26,6 +26,24 @@ extern const char kNamedInterfacePrefix[]; // Amount of time to wait before querying the browser. static const int kSleepTime = 250; +// Recognized by the AutomationProvider's SendWebKeyboardEventToSelectedTab +// command. Specifies the type of the keyboard event. +enum KeyEventTypes { + kRawKeyDownType = 0, + kKeyDownType, + kCharType, + kKeyUpType, +}; + +// Recognized by the AutomationProvider's SendWebKeyboardEventToSelectedTab +// command. Specifies masks to be used in constructing keyboard event modifiers. +enum KeyModifierMasks { + kShiftKeyMask = 1 << 0, + kControlKeyMask = 1 << 1, + kAltKeyMask = 1 << 2, + kMetaKeyMask = 1 << 3, +}; + } // namespace automation // Used by AutomationProxy, declared here so that other headers don't need diff --git a/chrome/common/automation_messages.h b/chrome/common/automation_messages.h index 7a9ba91..8bc8153 100644 --- a/chrome/common/automation_messages.h +++ b/chrome/common/automation_messages.h @@ -14,8 +14,8 @@ #include "chrome/common/page_type.h" #include "chrome/common/security_style.h" #include "chrome/common/common_param_traits.h" -#include "gfx/rect.h" #include "net/base/upload_data.h" +#include "ui/gfx/rect.h" struct AutomationMsg_Find_Params { // Unused value, which exists only for backwards compat. diff --git a/chrome/common/automation_messages_internal.h b/chrome/common/automation_messages_internal.h index a0a71ae..d6008e0 100644 --- a/chrome/common/automation_messages_internal.h +++ b/chrome/common/automation_messages_internal.h @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -11,10 +11,10 @@ #include "chrome/common/content_settings.h" #include "chrome/common/navigation_types.h" #include "chrome/test/automation/autocomplete_edit_proxy.h" -#include "gfx/rect.h" #include "googleurl/src/gurl.h" #include "ipc/ipc_message_macros.h" #include "net/url_request/url_request_status.h" +#include "ui/gfx/rect.h" @@ -24,7 +24,7 @@ // any other purpose in these message types. // NOTE: All the new IPC messages should go at the end. -// The IPC message IDs need to match the reference builds. Since we know +// The IPC message IDs need to match the reference builds. Since we now // define the IDs based on __LINE__, to allow these IPC messages to be // used to control an old version of Chrome we need the message IDs to // remain the same. This means that you should not change the line number @@ -364,7 +364,7 @@ IPC_MESSAGE_CONTROL3(AutomationMsg_WindowClick, // This message requests that a key press be performed. // Request: // int - the handle of the window that's the context for this click -// int - the app::KeyboardCode of the key that was pressed. +// int - the ui::KeyboardCode of the key that was pressed. // int - the flags which identify the modifiers (shift, ctrl, alt) // associated for, as defined in chrome/views/event.h IPC_MESSAGE_CONTROL3(AutomationMsg_WindowKeyPress, @@ -533,8 +533,8 @@ IPC_MESSAGE_ROUTED3(AutomationMsg_OpenURL, // - int: handle of the tab // Response: // - bool: whether the operation was successful. -IPC_SYNC_MESSAGE_CONTROL1_0(AutomationMsg_WaitForTabToBeRestored, - int) +IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_WaitForTabToBeRestored, + int, bool) // This message is an outgoing message from Chrome to an external host. // It is a notification that a navigation happened @@ -653,7 +653,7 @@ IPC_SYNC_MESSAGE_CONTROL4_1(AutomationMsg_SavePage, IPC_SYNC_MESSAGE_CONTROL1_2(AutomationMsg_AutocompleteEditGetText, int /* autocomplete edit handle */, bool /* the requested autocomplete edit exists */, - std::wstring /* omnibox text */) + string16 /* omnibox text */) // This message sets the text being displayed in the AutocompleteEdit. The // first parameter is the handle to the omnibox and the second parameter is @@ -662,7 +662,7 @@ IPC_SYNC_MESSAGE_CONTROL1_2(AutomationMsg_AutocompleteEditGetText, // completed. IPC_SYNC_MESSAGE_CONTROL2_1(AutomationMsg_AutocompleteEditSetText, int /* autocomplete edit handle */, - std::wstring /* text to set */, + string16 /* text to set */, bool /* the requested autocomplete edit exists */) // This message requests if a query to a autocomplete provider is still in @@ -755,16 +755,16 @@ IPC_SYNC_MESSAGE_CONTROL1_2(AutomationMsg_BookmarkBarVisibility, // returns -1 if an error occurred. IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_GetInfoBarCount, int /* tab_handle */, - int /* info bar count */) + size_t /* info bar count */) // This message triggers the action associated with the "accept" button in // the info-bar at the specified index. If |wait for navigation| is true, it // won't return until a navigation has occurred. IPC_SYNC_MESSAGE_CONTROL3_1(AutomationMsg_ClickInfoBarAccept, int /* tab_handle */, - int /* info bar index */, + size_t /* info bar index */, bool /* wait for navigation */, - +// This line blank on purpose, see comment atop file about __LINE__. /* navigation result */ AutomationMsg_NavigationResponseValues) @@ -779,7 +779,7 @@ IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_GetLastNavigationTime, IPC_SYNC_MESSAGE_CONTROL2_1(AutomationMsg_WaitForNavigation, int /* tab_handle */, int64 /* last navigation time */, - +// This line blank on purpose, see comment atop file about __LINE__. /* navigation result */ AutomationMsg_NavigationResponseValues) @@ -958,7 +958,7 @@ IPC_MESSAGE_ROUTED2(AutomationMsg_RequestData, IPC_MESSAGE_ROUTED2(AutomationMsg_RequestEnd, int /* request_id */, - URLRequestStatus /* status */) + net::URLRequestStatus /* status */) IPC_MESSAGE_CONTROL1(AutomationMsg_PrintAsync, int /* tab_handle */) @@ -1027,7 +1027,7 @@ IPC_SYNC_MESSAGE_CONTROL2_1(AutomationMsg_NavigateExternalTabAtIndex, // This message requests the provider to wait until the window count // reached the specified value. // Request: -// - int: target browser window count +// - int: target browser window count // Response: // - bool: whether the operation was successful. IPC_SYNC_MESSAGE_CONTROL1_1(AutomationMsg_WaitForBrowserWindowCountToBecome, @@ -1414,7 +1414,7 @@ IPC_SYNC_MESSAGE_CONTROL2_1(AutomationMsg_WaitForTabCountToBecome, // Waits for the infobar count to reach given number. IPC_SYNC_MESSAGE_CONTROL2_1(AutomationMsg_WaitForInfoBarCount, int /* tab handle */, - int /* target count */, + size_t /* target count */, bool /* success */) // Waits for the autocomplete edit to receive focus. @@ -1438,3 +1438,15 @@ IPC_SYNC_MESSAGE_CONTROL2_1(AutomationMsg_CaptureEntirePageAsPNG, int, FilePath, bool) + +// Notify the JavaScript engine in the render to change its parameters +// while performing stress testing. +IPC_MESSAGE_ROUTED3(AutomationMsg_JavaScriptStressTestControl, + int /* tab handle */, + int /* command */, + int /* type or run */) + +// This message posts a task to the PROCESS_LAUNCHER thread. Once processed +// the response is sent back. This is useful when you want to make sure all +// changes to the number of processes have completed. +IPC_SYNC_MESSAGE_CONTROL0_0(AutomationMsg_WaitForProcessLauncherThreadToGoIdle) diff --git a/chrome/common/badge_util.cc b/chrome/common/badge_util.cc index bd2067c..21746b0 100644 --- a/chrome/common/badge_util.cc +++ b/chrome/common/badge_util.cc @@ -4,12 +4,12 @@ #include "chrome/common/badge_util.h" -#include "app/resource_bundle.h" #include "base/utf_string_conversions.h" -#include "gfx/canvas_skia.h" -#include "gfx/font.h" #include "third_party/skia/include/core/SkPaint.h" #include "third_party/skia/include/core/SkTypeface.h" +#include "ui/base/resource/resource_bundle.h" +#include "ui/gfx/canvas_skia.h" +#include "ui/gfx/font.h" namespace badge_util { @@ -40,7 +40,7 @@ SkPaint* GetBadgeTextPaintSingleton() { ResourceBundle& rb = ResourceBundle::GetSharedInstance(); const gfx::Font& base_font = rb.GetFont(ResourceBundle::BaseFont); typeface = SkTypeface::CreateFromName( - WideToUTF8(base_font.GetFontName()).c_str(), SkTypeface::kNormal); + UTF16ToUTF8(base_font.GetFontName()).c_str(), SkTypeface::kNormal); } text_paint->setTypeface(typeface); diff --git a/chrome/common/bindings_policy.h b/chrome/common/bindings_policy.h index 0df8371..7d0db25 100644 --- a/chrome/common/bindings_policy.h +++ b/chrome/common/bindings_policy.h @@ -13,7 +13,7 @@ class BindingsPolicy { enum { // HTML-based UI bindings that allows he js content to send JSON-encoded // data back to the browser process. - DOM_UI = 1 << 0, + WEB_UI = 1 << 0, // DOM automation bindings that allows the js content to send JSON-encoded // data back to automation in the parent process. (By default this isn't // allowed unless the app has been started up with the --dom-automation @@ -26,8 +26,8 @@ class BindingsPolicy { EXTENSION = 1 << 3, }; - static bool is_dom_ui_enabled(int flags) { - return (flags & DOM_UI) != 0; + static bool is_web_ui_enabled(int flags) { + return (flags & WEB_UI) != 0; } static bool is_dom_automation_enabled(int flags) { return (flags & DOM_AUTOMATION) != 0; diff --git a/chrome/common/child_process_host.cc b/chrome/common/child_process_host.cc index e03b3a6..1b6459a 100644 --- a/chrome/common/child_process_host.cc +++ b/chrome/common/child_process_host.cc @@ -7,6 +7,7 @@ #include "base/command_line.h" #include "base/metrics/histogram.h" #include "base/path_service.h" +#include "base/third_party/dynamic_annotations/dynamic_annotations.h" #include "chrome/common/child_process_info.h" #include "chrome/common/chrome_constants.h" #include "chrome/common/chrome_paths_internal.h" @@ -56,7 +57,10 @@ FilePath ChildProcessHost::GetChildPath(bool allow_self) { #if defined(OS_LINUX) // Use /proc/self/exe rather than our known binary path so updates // can't swap out the binary from underneath us. - if (allow_self) + // When running under Valgrind, forking /proc/self/exe ends up forking the + // Valgrind executable, which then crashes. However, it's almost safe to + // assume that the updates won't happen while testing with Valgrind tools. + if (allow_self && !RunningOnValgrind()) return FilePath("/proc/self/exe"); #endif @@ -139,6 +143,16 @@ void ChildProcessHost::InstanceCreated() { Notify(NotificationType::CHILD_INSTANCE_CREATED); } +bool ChildProcessHost::OnMessageReceived(const IPC::Message& msg) { + return false; +} + +void ChildProcessHost::OnChannelConnected(int32 peer_pid) { +} + +void ChildProcessHost::OnChannelError() { +} + bool ChildProcessHost::Send(IPC::Message* message) { if (!channel_.get()) { delete message; @@ -151,6 +165,12 @@ void ChildProcessHost::OnChildDied() { delete this; } +void ChildProcessHost::ShutdownStarted() { +} + +void ChildProcessHost::Notify(NotificationType type) { +} + ChildProcessHost::ListenerHook::ListenerHook(ChildProcessHost* host) : host_(host) { } diff --git a/chrome/common/child_process_host.h b/chrome/common/child_process_host.h index c822346..08f585e 100644 --- a/chrome/common/child_process_host.h +++ b/chrome/common/child_process_host.h @@ -58,7 +58,7 @@ class ChildProcessHost : public IPC::Channel::Listener, #endif // defined(OS_WIN) // IPC::Message::Sender implementation. - bool Send(IPC::Message* message); + virtual bool Send(IPC::Message* message); protected: ChildProcessHost(); @@ -80,9 +80,9 @@ class ChildProcessHost : public IPC::Channel::Listener, virtual void InstanceCreated(); // IPC::Channel::Listener implementation: - virtual bool OnMessageReceived(const IPC::Message& msg) { return false; } - virtual void OnChannelConnected(int32 peer_pid) { } - virtual void OnChannelError() { } + virtual bool OnMessageReceived(const IPC::Message& msg); + virtual void OnChannelConnected(int32 peer_pid); + virtual void OnChannelError(); bool opening_channel() { return opening_channel_; } const std::string& channel_id() { return channel_id_; } @@ -91,9 +91,9 @@ class ChildProcessHost : public IPC::Channel::Listener, // Called when the child process goes away. virtual void OnChildDied(); // Notifies the derived class that we told the child process to kill itself. - virtual void ShutdownStarted() { } + virtual void ShutdownStarted(); // Subclasses can implement specific notification methods. - virtual void Notify(NotificationType type) { } + virtual void Notify(NotificationType type); private: // By using an internal class as the IPC::Channel::Listener, we can intercept diff --git a/chrome/common/child_process_info.cc b/chrome/common/child_process_info.cc index 69122cc..9084646 100644 --- a/chrome/common/child_process_info.cc +++ b/chrome/common/child_process_info.cc @@ -6,7 +6,6 @@ #include <limits> -#include "app/l10n_util.h" #include "base/atomicops.h" #include "base/i18n/rtl.h" #include "base/logging.h" @@ -15,6 +14,7 @@ #include "base/string_util.h" #include "base/utf_string_conversions.h" #include "grit/generated_resources.h" +#include "ui/base/l10n/l10n_util.h" ChildProcessInfo::ChildProcessInfo(ProcessType type, int id) : type_(type), diff --git a/chrome/common/child_process_info.h b/chrome/common/child_process_info.h index 4d5b721..8d4e60e 100644 --- a/chrome/common/child_process_info.h +++ b/chrome/common/child_process_info.h @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -37,7 +37,7 @@ class ChildProcessInfo { enum RendererProcessType { RENDERER_UNKNOWN = 0, RENDERER_NORMAL, - RENDERER_CHROME, // DOMUI (chrome:// URL) + RENDERER_CHROME, // WebUI (chrome:// URL) RENDERER_EXTENSION, // chrome-extension:// RENDERER_DEVTOOLS, // Web inspector RENDERER_INTERSTITIAL, // malware/phishing interstitial @@ -68,6 +68,9 @@ class ChildProcessInfo { // Getter to the process handle. base::ProcessHandle handle() const { return process_.handle(); } + // Getter to the process ID. + int pid() const { return process_.pid(); } + // The unique identifier for this child process. This identifier is NOT a // process ID, and will be unique for all types of child process for // one run of the browser. diff --git a/chrome/common/child_process_logging_mac.mm b/chrome/common/child_process_logging_mac.mm index ca12d1c..e14aa36 100644 --- a/chrome/common/child_process_logging_mac.mm +++ b/chrome/common/child_process_logging_mac.mm @@ -151,7 +151,7 @@ void SetGpuInfoImpl(const GPUInfo& gpu_info, base::UintToString(gpu_info.device_id()), set_key_func); SetGpuKeyValue(kGPUDriverVersionParamName, - WideToUTF8(gpu_info.driver_version()), + gpu_info.driver_version(), set_key_func); SetGpuKeyValue(kGPUPixelShaderVersionParamName, base::UintToString(gpu_info.pixel_shader_version()), diff --git a/chrome/common/child_process_logging_win.cc b/chrome/common/child_process_logging_win.cc index 1be4921..0753f44 100644 --- a/chrome/common/child_process_logging_win.cc +++ b/chrome/common/child_process_logging_win.cc @@ -139,7 +139,7 @@ void SetGpuInfo(const GPUInfo& gpu_info) { (set_gpu_info)( base::UintToString16(gpu_info.vendor_id()).c_str(), base::UintToString16(gpu_info.device_id()).c_str(), - gpu_info.driver_version().c_str(), + UTF8ToUTF16(gpu_info.driver_version()).c_str(), base::UintToString16(gpu_info.pixel_shader_version()).c_str(), base::UintToString16(gpu_info.vertex_shader_version()).c_str()); } diff --git a/chrome/common/child_thread.cc b/chrome/common/child_thread.cc index 53823bc..dd74aee 100644 --- a/chrome/common/child_thread.cc +++ b/chrome/common/child_thread.cc @@ -168,6 +168,10 @@ bool ChildThread::OnMessageReceived(const IPC::Message& msg) { return router_.OnMessageReceived(msg); } +bool ChildThread::OnControlMessageReceived(const IPC::Message& msg) { + return false; +} + void ChildThread::OnAskBeforeShutdown() { check_with_browser_before_shutdown_ = true; } diff --git a/chrome/common/child_thread.h b/chrome/common/child_thread.h index dbe8677..4537f1b 100644 --- a/chrome/common/child_thread.h +++ b/chrome/common/child_thread.h @@ -74,9 +74,7 @@ class ChildThread : public IPC::Channel::Listener, // Called when the process refcount is 0. void OnProcessFinalRelease(); - virtual bool OnControlMessageReceived(const IPC::Message& msg) { - return false; - } + virtual bool OnControlMessageReceived(const IPC::Message& msg); virtual void OnAskBeforeShutdown(); virtual void OnShutdown(); diff --git a/chrome/common/chrome_constants.cc b/chrome/common/chrome_constants.cc index 97bb58e..0cb0fca 100644 --- a/chrome/common/chrome_constants.cc +++ b/chrome/common/chrome_constants.cc @@ -115,7 +115,7 @@ const FilePath::CharType kServiceStateFileName[] = FPL("Service State"); // This number used to be limited to 32 in the past (see b/535234). const unsigned int kMaxRendererProcessCount = 42; const int kStatsMaxThreads = 32; -const int kStatsMaxCounters = 300; +const int kStatsMaxCounters = 3000; const size_t kMaxTitleChars = 4 * 1024; const size_t kMaxURLChars = 2 * 1024 * 1024; diff --git a/chrome/common/chrome_paths.cc b/chrome/common/chrome_paths.cc index 344db91..584bd9e 100644 --- a/chrome/common/chrome_paths.cc +++ b/chrome/common/chrome_paths.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2006-2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -182,7 +182,6 @@ bool PathProvider(int key, FilePath* result) { if (!PathService::Get(chrome::DIR_USER_DATA, &cur)) return false; cur = cur.Append(FILE_PATH_LITERAL("Temp")); - create_dir = true; break; case chrome::DIR_INTERNAL_PLUGINS: if (!GetInternalPluginsDirectory(&cur)) @@ -295,7 +294,7 @@ bool PathProvider(int key, FilePath* result) { if (!file_util::PathExists(cur)) // we don't want to create this return false; break; -#if !defined(OS_MACOSX) && defined(OS_POSIX) +#if defined(OS_POSIX) && !defined(OS_MACOSX) case chrome::DIR_POLICY_FILES: { #if defined(GOOGLE_CHROME_BUILD) cur = FilePath(FILE_PATH_LITERAL("/etc/opt/chrome/policies")); @@ -321,6 +320,14 @@ bool PathProvider(int key, FilePath* result) { break; } #endif +#if defined(OS_CHROMEOS) + case chrome::DIR_USER_EXTERNAL_EXTENSIONS: { + if (!PathService::Get(chrome::DIR_USER_DATA, &cur)) + return false; + cur = cur.Append(FILE_PATH_LITERAL("External Extensions")); + break; + } +#endif default: return false; } diff --git a/chrome/common/chrome_paths.h b/chrome/common/chrome_paths.h index 21867bd..74f7920 100644 --- a/chrome/common/chrome_paths.h +++ b/chrome/common/chrome_paths.h @@ -1,4 +1,4 @@ -// Copyright (c) 2006-2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -24,7 +24,7 @@ enum { DIR_RESOURCES, // Directory containing separate file resources // used by Chrome at runtime. DIR_SHARED_RESOURCES, // Directory containing js and css files used - // by DOMUI and component extensions. + // by WebUI and component extensions. DIR_INSPECTOR, // Directory where web inspector is located. DIR_APP_DICTIONARIES, // Directory where the global dictionaries are. DIR_USER_DOCUMENTS, // Directory for a user's "My Documents". @@ -35,6 +35,9 @@ enum { // this when a temporary file or directory will // be moved into the profile, to avoid issues // moving across volumes. See crbug.com/13044 . + // Getting this path does not create it. Users + // should check that the path exists before + // using it. DIR_INTERNAL_PLUGINS, // Directory where internal plugins reside. #if !defined(OS_MACOSX) && defined(OS_POSIX) DIR_POLICY_FILES, // Directory for system-wide read-only @@ -46,6 +49,12 @@ enum { DIR_MANAGED_PREFS, // Directory that stores the managed prefs plist // files for the current user. #endif +#if defined(OS_CHROMEOS) + DIR_USER_EXTERNAL_EXTENSIONS, // Directory for per-user external extensions. + // Used for OEM customization on Chrome OS. + // Getting this path does not create it. +#endif + FILE_RESOURCE_MODULE, // Full path and filename of the module that // contains embedded resources (version, // strings, images, etc.). diff --git a/chrome/common/chrome_paths_win.cc b/chrome/common/chrome_paths_win.cc index 062c43b..1892b43 100644 --- a/chrome/common/chrome_paths_win.cc +++ b/chrome/common/chrome_paths_win.cc @@ -15,7 +15,6 @@ #include "base/path_service.h" #include "chrome/common/chrome_constants.h" #include "chrome/installer/util/browser_distribution.h" -#include "chrome/installer/util/master_preferences.h" namespace chrome { @@ -32,8 +31,7 @@ bool GetChromeFrameUserDataDirectory(FilePath* result) { if (!PathService::Get(base::DIR_LOCAL_APP_DATA, result)) return false; BrowserDistribution* dist = BrowserDistribution::GetSpecificDistribution( - BrowserDistribution::CHROME_FRAME, - installer::MasterPreferences::ForCurrentProcess()); + BrowserDistribution::CHROME_FRAME); *result = result->Append(dist->GetInstallSubDir()); *result = result->Append(chrome::kUserDataDirname); return true; diff --git a/chrome/common/chrome_plugin_lib.cc b/chrome/common/chrome_plugin_lib.cc index fb4ac83..e19a247 100644 --- a/chrome/common/chrome_plugin_lib.cc +++ b/chrome/common/chrome_plugin_lib.cc @@ -153,11 +153,11 @@ void ChromePluginLib::LoadChromePlugins(const CPBrowserFuncs* bfuncs) { reg_path.append(iter.Name()); base::win::RegKey key(HKEY_CURRENT_USER, reg_path.c_str()); - DWORD is_persistent; - if (key.ReadValueDW(kRegistryLoadOnStartup, &is_persistent) && - is_persistent) { + DWORD is_persistent = 0; + key.ReadValueDW(kRegistryLoadOnStartup, &is_persistent); + if (is_persistent) { std::wstring path; - if (key.ReadValue(kRegistryPath, &path)) { + if (key.ReadValue(kRegistryPath, &path) == ERROR_SUCCESS) { ChromePluginLib::Create(path, bfuncs); } } diff --git a/chrome/common/chrome_plugin_util.cc b/chrome/common/chrome_plugin_util.cc index 649975f..d88773a 100644 --- a/chrome/common/chrome_plugin_util.cc +++ b/chrome/common/chrome_plugin_util.cc @@ -126,6 +126,8 @@ int PluginResponseUtils::GetResponseInfo( CPError CPB_GetCommandLineArgumentsCommon(const char* url, std::string* arguments) { + // TODO(aa): all of this code is only used by Gears, which we are removing. +#if defined(OS_WIN) const CommandLine cmd = *CommandLine::ForCurrentProcess(); std::wstring arguments_w; @@ -137,18 +139,10 @@ CPError CPB_GetCommandLineArgumentsCommon(const char* url, file_util::PathExists(user_data_dir)) { // TODO(evanm): use CommandLine APIs instead of this. arguments_w += std::wstring(L"--") + ASCIIToWide(switches::kUserDataDir) + - L"=\"" + user_data_dir.ToWStringHack() + L"\" "; + L"=\"" + user_data_dir.value() + L"\" "; } } -#if defined(OS_CHROMEOS) - FilePath profile = cmd.GetSwitchValuePath(switches::kLoginProfile); - if (!profile.empty()) { - arguments_w += std::wstring(L"--") + ASCIIToWide(switches::kLoginProfile) + - L"=\"" + profile.ToWStringHack() + L"\" "; - } -#endif - // Use '--app=url' instead of just 'url' to launch the browser with minimal // chrome. // Note: Do not change this flag! Old Gears shortcuts will break if you do! @@ -157,15 +151,18 @@ CPError CPB_GetCommandLineArgumentsCommon(const char* url, ReplaceSubstringsAfterOffset(&url_string, 0, "\"", "%22"); ReplaceSubstringsAfterOffset(&url_string, 0, ";", "%3B"); ReplaceSubstringsAfterOffset(&url_string, 0, "$", "%24"); -#if defined(OS_WIN) // Windows shortcuts can't escape % so we use \x instead. + // Windows shortcuts can't escape % so we use \x instead. ReplaceSubstringsAfterOffset(&url_string, 0, "%", "\\x"); -#endif std::wstring url_w = UTF8ToWide(url_string); // TODO(evanm): use CommandLine APIs instead of this. arguments_w += std::wstring(L"--") + ASCIIToWide(switches::kApp) + L"=\"" + url_w + L"\""; *arguments = WideToUTF8(arguments_w); +#else + // None of this code is used on non-Windows platforms. + NOTREACHED(); +#endif return CPERR_SUCCESS; } diff --git a/chrome/common/chrome_switches.cc b/chrome/common/chrome_switches.cc index 935a711..c4d19bf 100644 --- a/chrome/common/chrome_switches.cc +++ b/chrome/common/chrome_switches.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -43,6 +43,10 @@ const char kAllowSandboxDebugging[] = "allow-sandbox-debugging"; // useful for automation testing of the gallery. const char kAllowScriptingGallery[] = "allow-scripting-gallery"; +// This prevents Chrome from requiring authorization to run certain widely +// installed but less commonly used plug-ins. +const char kAlwaysAuthorizePlugins[] = "always-authorize-plugins"; + // Enable web inspector for all windows, even if they're part of the browser. // Allows us to use our dev tools to debug browser windows itself. const char kAlwaysEnableDevTools[] = "always-enable-dev-tools"; @@ -87,6 +91,11 @@ const char kAuthServerWhitelist[] = "auth-server-whitelist"; // automation-related messages on IPC channel with the given ID. const char kAutomationClientChannelID[] = "automation-channel"; +// When the option to block third-party cookies from being set is enabled, +// also block third-party cookies from being read. +const char kBlockReadingThirdPartyCookies[] = + "block-reading-third-party-cookies"; + // Causes the browser process to throw an assertion on startup. const char kBrowserAssertTest[] = "assert-test"; @@ -111,6 +120,14 @@ const char kChromeVersion[] = "chrome-version"; // The unique id to be used for this cloud print proxy instance. const char kCloudPrintProxyId[] = "cloud-print-proxy-id"; +// Tells chrome to display the cloud print dialog and upload the +// specified file for printing. +const char kCloudPrintFile[] = "cloud-print-file"; + +// Used with kCloudPrintFile to specify a title for the resulting print +// job. +const char kCloudPrintJobTitle[] = "cloud-print-job-title"; + // The URL of the cloud print service to use, overrides any value // stored in preferences, and the default. Only used if the cloud // print service has been enabled (see enable-cloud-print). @@ -191,11 +208,6 @@ const char kDisableBlockContentAnimation[] = // exceeded. const char kDisableConnectBackupJobs[] = "disable-connect-backup-jobs"; -// Disable requests that webkit labels TargetIsPrefetch. As of -// writing only <link rel=prefetch...> but also eventually -// Link: headers. -const char kDisableContentPrefetch[] = "disable-content-prefetch"; - // Disables the custom JumpList on Windows 7. const char kDisableCustomJumpList[] = "disable-custom-jumplist"; @@ -237,6 +249,9 @@ const char kDisableFlashSandbox[] = "disable-flash-sandbox"; // Suppresses support for the Geolocation javascript API. const char kDisableGeolocation[] = "disable-geolocation"; +// Disable GL multisampling. +const char kDisableGLMultisampling[] = "disable-gl-multisampling"; + // Disable the GLSL translator. const char kDisableGLSLTranslator[] = "disable-glsl-translator"; @@ -258,6 +273,10 @@ const char kDisableHistoryURLProvider[] = "disable-history-url-provider"; // Disable the Indexed Database API. const char kDisableIndexedDatabase[] = "disable-indexed-database"; +// Disables HTML5 Forms interactive validation. +const char kDisableInteractiveFormValidation[] = + "disable-interactive-form-validation"; + // Disable the internal Flash Player. const char kDisableInternalFlash[] = "disable-internal-flash"; @@ -343,17 +362,16 @@ const char kDisableSyncBookmarks[] = "disable-sync-bookmarks"; // Disable syncing of extensions. const char kDisableSyncExtensions[] = "disable-sync-extensions"; +// Disable syncing browser passwords. +const char kDisableSyncPasswords[] = "disable-sync-passwords"; + // Disable syncing of preferences. const char kDisableSyncPreferences[] = "disable-sync-preferences"; // Disable syncing of themes. const char kDisableSyncThemes[] = "disable-sync-themes"; -// Enable the new autofill type. -const char kEnableSyncNewAutofill[] = - "enable-sync-new-autofill-data-type"; - -// Disable tabbed options, i.e., DOMUI version of options window. +// Disable tabbed options, i.e., WebUI version of options window. const char kDisableTabbedOptions[] = "disable-tabbed-options"; // TabCloseableStateWatcher disallows closing of tabs and browsers under certain @@ -377,6 +395,9 @@ const char kDisableWebSecurity[] = "disable-web-security"; // Disable Web Sockets support. const char kDisableWebSockets[] = "disable-web-sockets"; +// Disable WebKit's XSSAuditor. The XSSAuditor mitigates reflective XSS. +const char kDisableXSSAuditor[] = "disable-xss-auditor"; + // Use a specific disk cache location, rather than one derived from the // UserDatadir. const char kDiskCacheDir[] = "disk-cache-dir"; @@ -412,6 +433,9 @@ const char kEnableAccelerated2dCanvas[] = "enable-accelerated-2d-canvas"; // Enables the hardware acceleration of 3D CSS and animation. const char kEnableAcceleratedLayers[] = "enable-accelerated-layers"; +// Enables the hardware acceleration of plugins. +const char kEnableAcceleratedPlugins[] = "enable-accelerated-plugins"; + // Enables WebKit accessibility within the renderer process. const char kEnableAccessibility[] = "enable-accessibility"; @@ -454,11 +478,6 @@ const char kEnableConfirmToQuit[] = "enable-confirm-to-quit"; // exceeded. const char kEnableConnectBackupJobs[] = "enable-connect-backup-jobs"; -// Enable requests that webkit labels TargetIsPrefetch. As of -// writing only <link rel=prefetch...> but also eventually -// Link: headers. -const char kEnableContentPrefetch[] = "enable-content-prefetch"; - // Enables web developers to create apps for Chrome without using crx packages. const char kEnableCrxlessWebApps[] = "enable-crxless-web-apps"; @@ -486,6 +505,14 @@ const char kEnableFastback[] = "enable-fastback"; // testing, for example page cycler and layout tests. See bug 1157243. const char kEnableFileCookies[] = "enable-file-cookies"; +// Enable FileSystem API URLs. +const char kEnableFileSystemURLScheme[] = "enable-filesystem-url-scheme"; + +// Enable the in-browser thumbnailing, which is more efficient than the +// in-renderer thumbnailing, as we can use more information to determine +// if we need to update thumbnails. +const char kEnableInBrowserThumbnailing[] = "enable-in-browser-thumbnailing"; + // Enable IPv6 support, even if probes suggest that it may not be fully // supported. Some probes may require internet connections, and this flag will // allow support independent of application testing. @@ -495,6 +522,9 @@ const char kEnableIPv6[] = "enable-ipv6"; // Enable the GPU plugin and Pepper 3D rendering. const char kEnableGPUPlugin[] = "enable-gpu-plugin"; +// Enable experimental JavaScript I18N API. +const char kEnableJavaScriptI18NAPI[] = "enable-javascript-i18n-api"; + // Force logging to be enabled. Logging is disabled by default in release // builds. const char kEnableLogging[] = "enable-logging"; @@ -508,7 +538,7 @@ const char kEnableMemoryInfo[] = "enable-memory-info"; const char kEnableMonitorProfile[] = "enable-monitor-profile"; // Runs the Native Client inside the renderer process and enables GPU plugin -// (internally adds kInternalNaCl and lEnableGpuPlugin to the command line). +// (internally adds lEnableGpuPlugin to the command line). const char kEnableNaCl[] = "enable-nacl"; // Enables debugging via RSP over a socket. @@ -517,13 +547,6 @@ const char kEnableNaClDebug[] = "enable-nacl-debug"; // Enable Native Web Worker support. const char kEnableNativeWebWorkers[] = "enable-native-web-workers"; -// Is InstantController::PREDICTIVE_TYPE enabled? -const char kEnablePredictiveInstant[] = "enable-predictive-instant"; - -// Is InstantController::PREDICTIVE_NO_AUTO_COMPLETE_TYPE enabled? -const char kEnablePredictiveNoAutoCompleteInstant[] = - "enable-predictive-no-auto-complete-instant"; - // This applies only when the process type is "service". Enables the // Chromoting Host Process within the service process. const char kEnableRemoting[] = "enable-remoting"; @@ -532,9 +555,6 @@ const char kEnableRemoting[] = "enable-remoting"; const char kEnableResourceContentSettings[] = "enable-resource-content-settings"; -// Enable speculative prerendering of pages. -const char kEnablePagePrerender[] = "enable-page-prerender"; - // Enable speculative TCP/IP preconnection. const char kEnablePreconnect[] = "enable-preconnect"; @@ -563,9 +583,6 @@ const char kEnableSync[] = "enable-sync"; // Enable syncing browser autofill. const char kEnableSyncAutofill[] = "enable-sync-autofill"; -// Enable syncing browser passwords. -const char kEnableSyncPasswords[] = "enable-sync-passwords"; - // Enable syncing browser sessions. const char kEnableSyncSessions[] = "enable-sync-sessions"; @@ -576,15 +593,9 @@ const char kEnableSyncTypedUrls[] = "enable-sync-typed-urls"; // SYN packet. const char kEnableTcpFastOpen[] = "enable-tcp-fastopen"; -// Enables TopSites. -const char kEnableTopSites[] = "enable-top-sites"; - // Whether or not the touch events API is exposed. const char kEnableTouch[] = "enable-touch"; -// Is verbatim instant enabled? -const char kEnableVerbatimInstant[] = "enable-verbatim-instant"; - // Enables the option to show tabs as a vertical stack down the side of the // browser window. const char kEnableVerticalTabs[] = "enable-vertical-tabs"; @@ -603,8 +614,8 @@ const char kEnableVideoLogging[] = "enable-video-logging"; // Order of the listed sub-arguments does not matter. const char kEnableWatchdog[] = "enable-watchdog"; -// Disable WebKit's XSSAuditor. The XSSAuditor mitigates reflective XSS. -const char kEnableXSSAuditor[] = "enable-xss-auditor"; +// Enable web audio API. +const char kEnableWebAudio[] = "enable-webaudio"; // Enables experimental features for the geolocation API. // Current features: @@ -667,10 +678,6 @@ const char kForceAppsPromoVisible[] = "force-apps-promo-visible"; // current details. const char kForceFieldTestNameAndValue[] = "force-fieldtest"; -// Forces the internal PDF plugin to be used for this run, even if it's disabled -// by default. Used for testing. -const char kForceInternalPDFPlugin[] = "force-internal-pdf"; - // Force renderer accessibility to be on instead of enabling it on demand when // a screen reader is detected. The disable-renderer-accessibility switch // overrides this if present. @@ -752,9 +759,6 @@ const char kIncognito[] = "incognito"; // TemplateURL. const char kInstantURL[] = "instant-url"; -// Runs the Native Client inside the renderer process. -const char kInternalNaCl[] = "internal-nacl"; - // Runs a trusted Pepper plugin inside the renderer process. const char kInternalPepper[] = "internal-pepper"; @@ -805,6 +809,9 @@ const char kMessageLoopHistogrammer[] = "message-loop-histogrammer"; // and performance tests. const char kMetricsRecordingOnly[] = "metrics-recording-only"; +// The minimum version of Flash that implements the NPP_ClearSiteData API. +const char kMinClearSiteDataFlashVersion[] = "min-clearsitedata-flash-version"; + // Sets the default IP address (interface) for the stub (normally 127.0.0.1). const char kNaClDebugIP[] = "nacl-debug-ip"; @@ -923,9 +930,18 @@ const char kPpapiPluginProcess[] = "ppapi"; // Causes the PPAPI sub process to display a dialog on launch. const char kPpapiStartupDialog[] = "ppapi-startup-dialog"; -// Establishes a channel to the GPU process asynchronously and (re)launches it -// if necessary when a renderer process starts. -const char kPrelaunchGpuProcess[] = "prelaunch-gpu-process"; +// Controls speculative prerendering of pages, and content prefetching. Both +// are dispatched from <link rel=prefetch href=...> elements. +const char kPrerender[] = "prerender"; +// These are the values the switch may have, as in "--prerender=auto". +// auto: Allow field trial selection in both prerender and prefetch. +const char kPrerenderSwitchValueAuto[] = "auto"; +// disabled: No prerendering or prefetching. +const char kPrerenderSwitchValueDisabled[] = "disabled"; +// enabled: Both prerendering and prefetching. +const char kPrerenderSwitchValueEnabled[] = "enabled"; +// prefetch_only: No prerendering, but enable prefetching. +const char kPrerenderSwitchValuePrefetchOnly[] = "prefetch_only"; // Prints the pages on the screen. const char kPrint[] = "print"; @@ -953,6 +969,26 @@ const char kProductVersion[] = "product-version"; // Causes the process to run as a profile import subprocess. const char kProfileImportProcess[] = "profile-import"; +// Starts the sampling based profiler for the browser process at +// startup. This will only work if chrome has been built with +// the gyp variable profiling=1. The output will go to the value +// of kProfilingFile. +const char kProfilingAtStart[] = "profiling-at-start"; + +// Specifies a location for profiling output. This will only work if chrome +// has been built with the gyp variable profiling=1. +// {pid} if present will be replaced by the pid of the process. +// {count} if present will be incremented each time a profile is generated +// for this process. +// The default is chrome-profile-{pid}. +const char kProfilingFile[] = "profiling-file"; + +// Controls whether profile data is periodically flushed to a file. +// Normally the data gets written on exit but cases exist where chrome +// doesn't exit cleanly (especially when using single-process). +// A time in seconds can be specified. +const char kProfilingFlush[] = "profiling-flush"; + // Force proxy auto-detection. const char kProxyAutoDetect[] = "proxy-auto-detect"; @@ -986,6 +1022,9 @@ const char kRecordMode[] = "record-mode"; // Register pepper plugins that should be loaded into the renderer. const char kRegisterPepperPlugins[] = "register-pepper-plugins"; +// Reload pages that have been killed when they are next focused by the user. +const char kReloadKilledTabs[] = "reload-killed-tabs"; + // Enable remote debug over HTTP on the specified port. const char kRemoteDebuggingPort[] = "remote-debugging-port"; @@ -1277,8 +1316,8 @@ const char kCompressSystemFeedback[] = "compress-sys-feedback"; // switch separates chrome code from the rest of ChromeOS. const char kForceStubLibcros[] = "force-stub-libcros"; -// Enables DOMUI menu. -const char kEnableDOMUIMenu[] = "enable-domui-menu"; +// Enables WebUI menu. +const char kEnableWebUIMenu[] = "enable-webui-menu"; // Enables Media Player. const char kEnableMediaPlayer[] = "enable-media-player"; @@ -1321,9 +1360,6 @@ const char kPasswordStore[] = "password-store"; // has been out there for a few dev channel releases without problems. const char kDisableHolePunching[] = "disable-hole-punching"; -// Enables the tabs expose feature ( http://crbug.com/50307 ). -const char kEnableExposeForTabs[] = "enable-expose-for-tabs"; - // Cause the OS X sandbox write to syslog every time an access to a resource // is denied by the sandbox. const char kEnableSandboxLogging[] = "enable-sandbox-logging"; @@ -1332,6 +1368,12 @@ const char kEnableSandboxLogging[] = "enable-sandbox-logging"; const char kKioskMode[] = "kiosk"; #endif +// Enables debug paint in views framework. Enabling this causes the damaged +// region being painted to flash in red. +#if defined(TOOLKIT_VIEWS) +const char kDebugViewsPaint[] = "debug-views-paint"; +#endif + #ifndef NDEBUG // Clear the token service before using it. This allows simulating // the expiration of credentials during testing. @@ -1350,6 +1392,9 @@ const char kWebSocketLiveExperimentHost[] = "websocket-live-experiment-host"; #endif #if defined(HAVE_XINPUT2) +// Tells chrome to interpret events from these devices as touch events. Only +// available with XInput 2 (i.e. X server 1.8 or above). The id's of the devices +// can be retrieved from 'xinput list'. const char kTouchDevices[] = "touch-devices"; #endif diff --git a/chrome/common/chrome_switches.h b/chrome/common/chrome_switches.h index 9a24f9f..988c2f2 100644 --- a/chrome/common/chrome_switches.h +++ b/chrome/common/chrome_switches.h @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -27,6 +27,7 @@ extern const char kAllowOutdatedPlugins[]; extern const char kAllowSSLMITMProxies[]; extern const char kAllowSandboxDebugging[]; extern const char kAllowScriptingGallery[]; +extern const char kAlwaysAuthorizePlugins[]; extern const char kAlwaysEnableDevTools[]; extern const char kApp[]; extern const char kAppId[]; @@ -38,12 +39,15 @@ extern const char kAuthNegotiateDelegateWhitelist[]; extern const char kAuthSchemes[]; extern const char kAuthServerWhitelist[]; extern const char kAutomationClientChannelID[]; +extern const char kBlockReadingThirdPartyCookies[]; extern const char kBrowserAssertTest[]; extern const char kBrowserCrashTest[]; extern const char kBrowserSubprocessPath[]; extern const char kCheckForUpdateIntervalSec[]; extern const char kChromeFrame[]; extern const char kChromeVersion[]; +extern const char kCloudPrintFile[]; +extern const char kCloudPrintJobTitle[]; extern const char kCloudPrintProxyId[]; extern const char kCloudPrintServiceURL[]; extern const char kConflictingModulesCheck[]; @@ -63,7 +67,6 @@ extern const char kDisableBackgroundNetworking[]; extern const char kDisableBackingStoreLimit[]; extern const char kDisableBlockContentAnimation[]; extern const char kDisableConnectBackupJobs[]; -extern const char kDisableContentPrefetch[]; extern const char kDisableCustomJumpList[]; extern const char kDisableDatabases[]; extern const char kDisableDesktopNotifications[]; @@ -75,12 +78,14 @@ extern const char kDisableExtensionsFileAccessCheck[]; extern const char kDisableExtensions[]; extern const char kDisableFileSystem[]; extern const char kDisableFlashSandbox[]; +extern const char kDisableGLMultisampling[]; extern const char kDisableGLSLTranslator[]; extern const char kDisableGeolocation[]; extern const char kDisableGpuWatchdog[]; extern const char kDisableHangMonitor[]; extern const char kDisableHistoryQuickProvider[]; extern const char kDisableHistoryURLProvider[]; +extern const char kDisableInteractiveFormValidation[]; extern const char kDisableInternalFlash[]; extern const char kDisableIndexedDatabase[]; extern const char kDisableIPv6[]; @@ -107,6 +112,7 @@ extern const char kDisableSyncAutofill[]; extern const char kDisableSyncAutofillProfile[]; extern const char kDisableSyncBookmarks[]; extern const char kDisableSyncExtensions[]; +extern const char kDisableSyncPasswords[]; extern const char kDisableSyncPreferences[]; extern const char kDisableSyncThemes[]; extern const char kDisableTabbedOptions[]; @@ -115,6 +121,7 @@ extern const char kDisableTranslate[]; extern const char kDisableWebResources[]; extern const char kDisableWebSecurity[]; extern const char kDisableWebSockets[]; +extern const char kDisableXSSAuditor[]; extern const char kDiskCacheDir[]; extern const char kDiskCacheSize[]; extern const char kDnsLogDetails[]; @@ -124,6 +131,7 @@ extern const char kDomAutomationController[]; extern const char kDumpHistogramsOnExit[]; extern const char kEnableAccelerated2dCanvas[]; extern const char kEnableAcceleratedLayers[]; +extern const char kEnableAcceleratedPlugins[]; extern const char kEnableAccessibility[]; extern const char kEnableAeroPeekTabs[]; extern const char kEnableAuthNegotiatePort[]; @@ -135,7 +143,6 @@ extern const char kEnableCloudPrintProxy[]; extern const char kEnableCloudPrint[]; extern const char kEnableConfirmToQuit[]; extern const char kEnableConnectBackupJobs[]; -extern const char kEnableContentPrefetch[]; extern const char kEnableCrxlessWebApps[]; extern const char kEnableDeviceMotion[]; extern const char kEnableDNSCertProvenanceChecking[]; @@ -144,19 +151,18 @@ extern const char kEnableExperimentalExtensionApis[]; extern const char kEnableExtensionTimelineApi[]; extern const char kEnableFastback[]; extern const char kEnableFileCookies[]; +extern const char kEnableFileSystemURLScheme[]; extern const char kEnableGPUPlugin[]; +extern const char kEnableInBrowserThumbnailing[]; extern const char kEnableIPv6[]; +extern const char kEnableJavaScriptI18NAPI[]; extern const char kEnableLogging[]; extern const char kEnableMemoryInfo[]; extern const char kEnableMonitorProfile[]; extern const char kEnableNaCl[]; extern const char kEnableNaClDebug[]; extern const char kEnableNativeWebWorkers[]; -extern const char kEnablePagePrerender[]; -extern const char kEnableSyncNewAutofill[]; extern const char kEnablePreconnect[]; -extern const char kEnablePredictiveInstant[]; -extern const char kEnablePredictiveNoAutoCompleteInstant[]; extern const char kEnablePreparsedJsCaching[]; extern const char kEnablePrintPreview[]; extern const char kEnableRemoting[]; @@ -167,19 +173,17 @@ extern const char kEnableSpeechInput[]; extern const char kEnableStatsTable[]; extern const char kEnableSync[]; extern const char kEnableSyncAutofill[]; -extern const char kEnableSyncPasswords[]; extern const char kEnableSyncPreferences[]; extern const char kEnableSyncSessions[]; extern const char kEnableSyncTypedUrls[]; extern const char kEnableTcpFastOpen[]; extern const char kEnableTopSites[]; extern const char kEnableTouch[]; -extern const char kEnableVerbatimInstant[]; extern const char kEnableVerticalTabs[]; extern const char kEnableVideoFullscreen[]; extern const char kEnableVideoLogging[]; extern const char kEnableWatchdog[]; -extern const char kEnableXSSAuditor[]; +extern const char kEnableWebAudio[]; // Experimental features. extern const char kExperimentalLocationFeatures[]; extern const char kExperimentalSpellcheckerFeatures[]; @@ -194,7 +198,6 @@ extern const char kFileDescriptorLimit[]; extern const char kFirstRun[]; extern const char kForceAppsPromoVisible[]; extern const char kForceFieldTestNameAndValue[]; -extern const char kForceInternalPDFPlugin[]; extern const char kForceRendererAccessibility[]; extern const char kForceStubLibcros[]; extern const char kGpuLauncher[]; @@ -215,7 +218,6 @@ extern const char kInProcessPlugins[]; extern const char kInProcessWebGL[]; extern const char kIncognito[]; extern const char kInstantURL[]; -extern const char kInternalNaCl[]; extern const char kInternalPepper[]; extern const char kJavaScriptFlags[]; extern const char kKeepAliveForTest[]; @@ -231,6 +233,7 @@ extern const char kMediaCacheSize[]; extern const char kMemoryProfiling[]; extern const char kMessageLoopHistogrammer[]; extern const char kMetricsRecordingOnly[]; +extern const char kMinClearSiteDataFlashVersion[]; extern const char kNaClDebugIP[]; extern const char kNaClDebugPorts[]; extern const char kNaClBrokerProcess[]; @@ -264,13 +267,20 @@ extern const char kPpapiOutOfProcess[]; extern const char kPpapiPluginLauncher[]; extern const char kPpapiPluginProcess[]; extern const char kPpapiStartupDialog[]; -extern const char kPrelaunchGpuProcess[]; +extern const char kPrerender[]; +extern const char kPrerenderSwitchValueAuto[]; +extern const char kPrerenderSwitchValueDisabled[]; +extern const char kPrerenderSwitchValueEnabled[]; +extern const char kPrerenderSwitchValuePrefetchOnly[]; extern const char kPrint[]; extern const char kProcessPerSite[]; extern const char kProcessPerTab[]; extern const char kProcessType[]; extern const char kProductVersion[]; extern const char kProfileImportProcess[]; +extern const char kProfilingAtStart[]; +extern const char kProfilingFile[]; +extern const char kProfilingFlush[]; extern const char kProxyAutoDetect[]; extern const char kProxyBypassList[]; extern const char kProxyPacUrl[]; @@ -278,6 +288,7 @@ extern const char kProxyServer[]; extern const char kPurgeMemoryButton[]; extern const char kRecordMode[]; extern const char kRegisterPepperPlugins[]; +extern const char kReloadKilledTabs[]; extern const char kRemoteDebuggingPort[]; extern const char kRemoteShellPort[]; extern const char kRendererAssertTest[]; @@ -359,7 +370,7 @@ extern const char kGuestSession[]; extern const char kStubCros[]; extern const char kScreenSaverUrl[]; extern const char kCompressSystemFeedback[]; -extern const char kEnableDOMUIMenu[]; +extern const char kEnableWebUIMenu[]; extern const char kEnableMediaPlayer[]; extern const char kEnableAdvancedFileSystem[]; #endif @@ -382,12 +393,15 @@ extern const char kPasswordStore[]; #if defined(OS_MACOSX) extern const char kDisableHolePunching[]; -extern const char kEnableExposeForTabs[]; extern const char kEnableSandboxLogging[]; #else extern const char kKioskMode[]; #endif +#if defined(TOOLKIT_VIEWS) +extern const char kDebugViewsPaint[]; +#endif + #ifndef NDEBUG extern const char kClearTokenService[]; extern const char kGearsPluginPathOverride[]; diff --git a/chrome/common/common.sb b/chrome/common/common.sb index 4b5c4f5..ec97f66 100644 --- a/chrome/common/common.sb +++ b/chrome/common/common.sb @@ -33,4 +33,4 @@ (regex #"^/System/Library/CoreServices($|/)")) ; 10.5.6 ; Needed for IPC on 10.6 -;10.6_ONLY (allow ipc-posix-shm)
\ No newline at end of file +;10.6_ONLY (allow ipc-posix-shm) diff --git a/chrome/common/common_glue.cc b/chrome/common/common_glue.cc index 5fe6094..4573dfb 100644 --- a/chrome/common/common_glue.cc +++ b/chrome/common/common_glue.cc @@ -3,7 +3,6 @@ // found in the LICENSE file. #include "app/app_switches.h" -#include "app/l10n_util.h" #include "base/command_line.h" #include "base/path_service.h" #include "base/string16.h" @@ -13,6 +12,8 @@ #include "chrome/common/chrome_switches.h" #include "chrome/plugin/npobject_util.h" #include "googleurl/src/url_util.h" +#include "ui/base/l10n/l10n_util.h" +#include "ui/base/ui_base_switches.h" #include "webkit/glue/webkit_glue.h" namespace webkit_glue { diff --git a/chrome/common/common_message_generator.cc b/chrome/common/common_message_generator.cc new file mode 100644 index 0000000..e349e3b --- /dev/null +++ b/chrome/common/common_message_generator.cc @@ -0,0 +1,33 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Get basic type definitions. +#define IPC_MESSAGE_IMPL +#include "chrome/common/common_message_generator.h" +#include "chrome/common/common_param_traits.h" + +// Generate constructors. +#include "ipc/struct_constructor_macros.h" +#include "chrome/common/common_message_generator.h" + +// Generate destructors. +#include "ipc/struct_destructor_macros.h" +#include "chrome/common/common_message_generator.h" + +namespace IPC { + +// Generate param traits write methods. +#include "ipc/param_traits_write_macros.h" +#include "chrome/common/common_message_generator.h" + +// Generate param traits read methods. +#include "ipc/param_traits_read_macros.h" +#include "chrome/common/common_message_generator.h" + +// Generate param traits log methods. +#include "ipc/param_traits_log_macros.h" +#include "chrome/common/common_message_generator.h" + +} // namespace IPC + diff --git a/chrome/common/common_message_generator.h b/chrome/common/common_message_generator.h new file mode 100644 index 0000000..3a31c77 --- /dev/null +++ b/chrome/common/common_message_generator.h @@ -0,0 +1,29 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +// Multiply-included file, hence no include guard. + +#include "chrome/common/indexed_db_messages.h" + +#if 0 // This feature is not yet enabled for these files. + +#include "chrome/common/autofill_messages.h" +#include "chrome/common/automation_messages.h" +#include "chrome/common/database_messages.h" +#include "chrome/common/devtools_messages.h" +#include "chrome/common/dom_storage_messages.h" +#include "chrome/common/file_utilities_messages.h" +#include "chrome/common/gpu_messages.h" +#include "chrome/common/mime_registry_messages.h" +#include "chrome/common/nacl_messages.h" +#include "chrome/common/pepper_file_messages.h" +#include "chrome/common/pepper_messages.h" +#include "chrome/common/plugin_messages.h" +#include "chrome/common/render_messages.h" +#include "chrome/common/service_messages.h" +#include "chrome/common/speech_input_messages.h" +#include "chrome/common/utility_messages.h" +#include "chrome/common/worker_messages.h" + +#endif diff --git a/chrome/common/common_param_traits.cc b/chrome/common/common_param_traits.cc index 40417fc..64fa35c 100644 --- a/chrome/common/common_param_traits.cc +++ b/chrome/common/common_param_traits.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -10,12 +10,12 @@ #include "chrome/common/geoposition.h" #include "chrome/common/thumbnail_score.h" #include "chrome/common/web_apps.h" -#include "gfx/rect.h" #include "googleurl/src/gurl.h" #include "net/base/upload_data.h" #include "printing/backend/print_backend.h" #include "printing/native_metafile.h" #include "printing/page_range.h" +#include "ui/gfx/rect.h" #ifndef EXCLUDE_SKIA_DEPENDENCIES #include "third_party/skia/include/core/SkBitmap.h" @@ -290,50 +290,52 @@ void ParamTraits<WebApplicationInfo>::Log(const WebApplicationInfo& p, l->append("<WebApplicationInfo>"); } -void ParamTraits<URLRequestStatus>::Write(Message* m, const param_type& p) { +void ParamTraits<net::URLRequestStatus>::Write(Message* m, + const param_type& p) { WriteParam(m, static_cast<int>(p.status())); WriteParam(m, p.os_error()); } -bool ParamTraits<URLRequestStatus>::Read(const Message* m, void** iter, - param_type* r) { +bool ParamTraits<net::URLRequestStatus>::Read(const Message* m, void** iter, + param_type* r) { int status, os_error; if (!ReadParam(m, iter, &status) || !ReadParam(m, iter, &os_error)) return false; - r->set_status(static_cast<URLRequestStatus::Status>(status)); + r->set_status(static_cast<net::URLRequestStatus::Status>(status)); r->set_os_error(os_error); return true; } -void ParamTraits<URLRequestStatus>::Log(const param_type& p, std::string* l) { +void ParamTraits<net::URLRequestStatus>::Log(const param_type& p, + std::string* l) { std::string status; switch (p.status()) { - case URLRequestStatus::SUCCESS: + case net::URLRequestStatus::SUCCESS: status = "SUCCESS"; break; - case URLRequestStatus::IO_PENDING: + case net::URLRequestStatus::IO_PENDING: status = "IO_PENDING "; break; - case URLRequestStatus::HANDLED_EXTERNALLY: + case net::URLRequestStatus::HANDLED_EXTERNALLY: status = "HANDLED_EXTERNALLY"; break; - case URLRequestStatus::CANCELED: + case net::URLRequestStatus::CANCELED: status = "CANCELED"; break; - case URLRequestStatus::FAILED: + case net::URLRequestStatus::FAILED: status = "FAILED"; break; default: status = "UNKNOWN"; break; } - if (p.status() == URLRequestStatus::FAILED) + if (p.status() == net::URLRequestStatus::FAILED) l->append("("); LogParam(status, l); - if (p.status() == URLRequestStatus::FAILED) { + if (p.status() == net::URLRequestStatus::FAILED) { l->append(", "); LogParam(p.os_error(), l); l->append(")"); @@ -348,47 +350,83 @@ struct ParamTraits<net::UploadData::Element> { typedef net::UploadData::Element param_type; static void Write(Message* m, const param_type& p) { WriteParam(m, static_cast<int>(p.type())); - if (p.type() == net::UploadData::TYPE_BYTES) { - m->WriteData(&p.bytes()[0], static_cast<int>(p.bytes().size())); - } else if (p.type() == net::UploadData::TYPE_FILE) { - WriteParam(m, p.file_path()); - WriteParam(m, p.file_range_offset()); - WriteParam(m, p.file_range_length()); - WriteParam(m, p.expected_file_modification_time()); - } else { - WriteParam(m, p.blob_url()); + switch (p.type()) { + case net::UploadData::TYPE_BYTES: { + m->WriteData(&p.bytes()[0], static_cast<int>(p.bytes().size())); + break; + } + case net::UploadData::TYPE_CHUNK: { + m->WriteData(&p.bytes()[0], static_cast<int>(p.bytes().size())); + // If this element is part of a chunk upload then send over information + // indicating if this is the last chunk. + WriteParam(m, p.is_last_chunk()); + break; + } + case net::UploadData::TYPE_FILE: { + WriteParam(m, p.file_path()); + WriteParam(m, p.file_range_offset()); + WriteParam(m, p.file_range_length()); + WriteParam(m, p.expected_file_modification_time()); + break; + } + default: { + WriteParam(m, p.blob_url()); + break; + } } } static bool Read(const Message* m, void** iter, param_type* r) { int type; if (!ReadParam(m, iter, &type)) return false; - if (type == net::UploadData::TYPE_BYTES) { - const char* data; - int len; - if (!m->ReadData(iter, &data, &len)) - return false; - r->SetToBytes(data, len); - } else if (type == net::UploadData::TYPE_FILE) { - FilePath file_path; - uint64 offset, length; - base::Time expected_modification_time; - if (!ReadParam(m, iter, &file_path)) - return false; - if (!ReadParam(m, iter, &offset)) - return false; - if (!ReadParam(m, iter, &length)) - return false; - if (!ReadParam(m, iter, &expected_modification_time)) - return false; - r->SetToFilePathRange(file_path, offset, length, - expected_modification_time); - } else { - DCHECK(type == net::UploadData::TYPE_BLOB); - GURL blob_url; - if (!ReadParam(m, iter, &blob_url)) - return false; - r->SetToBlobUrl(blob_url); + switch (type) { + case net::UploadData::TYPE_BYTES: { + const char* data; + int len; + if (!m->ReadData(iter, &data, &len)) + return false; + r->SetToBytes(data, len); + break; + } + case net::UploadData::TYPE_CHUNK: { + const char* data; + int len; + if (!m->ReadData(iter, &data, &len)) + return false; + r->SetToBytes(data, len); + // If this element is part of a chunk upload then we need to explicitly + // set the type of the element and whether it is the last chunk. + bool is_last_chunk = false; + if (!ReadParam(m, iter, &is_last_chunk)) + return false; + r->set_type(net::UploadData::TYPE_CHUNK); + r->set_is_last_chunk(is_last_chunk); + break; + } + case net::UploadData::TYPE_FILE: { + FilePath file_path; + uint64 offset, length; + base::Time expected_modification_time; + if (!ReadParam(m, iter, &file_path)) + return false; + if (!ReadParam(m, iter, &offset)) + return false; + if (!ReadParam(m, iter, &length)) + return false; + if (!ReadParam(m, iter, &expected_modification_time)) + return false; + r->SetToFilePathRange(file_path, offset, length, + expected_modification_time); + break; + } + default: { + DCHECK(type == net::UploadData::TYPE_BLOB); + GURL blob_url; + if (!ReadParam(m, iter, &blob_url)) + return false; + r->SetToBlobUrl(blob_url); + break; + } } return true; } @@ -403,6 +441,7 @@ void ParamTraits<scoped_refptr<net::UploadData> >::Write(Message* m, if (p) { WriteParam(m, *p->elements()); WriteParam(m, p->identifier()); + WriteParam(m, p->is_chunked()); } } @@ -420,9 +459,13 @@ bool ParamTraits<scoped_refptr<net::UploadData> >::Read(const Message* m, int64 identifier; if (!ReadParam(m, iter, &identifier)) return false; + bool is_chunked = false; + if (!ReadParam(m, iter, &is_chunked)) + return false; *r = new net::UploadData; (*r)->swap_elements(&elements); (*r)->set_identifier(identifier); + (*r)->set_is_chunked(is_chunked); return true; } diff --git a/chrome/common/common_param_traits.h b/chrome/common/common_param_traits.h index ad9c05a..f1e8cb0 100644 --- a/chrome/common/common_param_traits.h +++ b/chrome/common/common_param_traits.h @@ -18,7 +18,6 @@ #include "base/ref_counted.h" #include "chrome/common/content_settings.h" #include "chrome/common/page_zoom.h" -#include "gfx/native_widget_types.h" #include "ipc/ipc_message_utils.h" #include "net/url_request/url_request_status.h" #include "printing/native_metafile.h" @@ -30,6 +29,7 @@ // // TODO(erg): The following two headers are historical and only work because // their definitions are inlined, which also needs to be fixed. +#include "ui/gfx/native_widget_types.h" #include "webkit/glue/webcursor.h" #include "webkit/glue/window_open_disposition.h" @@ -265,8 +265,8 @@ struct ParamTraits<TransportDIB::Id> { // Traits for URLRequestStatus template <> -struct ParamTraits<URLRequestStatus> { - typedef URLRequestStatus param_type; +struct ParamTraits<net::URLRequestStatus> { + typedef net::URLRequestStatus param_type; static void Write(Message* m, const param_type& p); static bool Read(const Message* m, void** iter, param_type* r); static void Log(const param_type& p, std::string* l); diff --git a/chrome/common/common_param_traits_unittest.cc b/chrome/common/common_param_traits_unittest.cc index 8446158..a11ddd1 100644 --- a/chrome/common/common_param_traits_unittest.cc +++ b/chrome/common/common_param_traits_unittest.cc @@ -9,7 +9,6 @@ #include "base/values.h" #include "chrome/common/common_param_traits.h" #include "chrome/common/geoposition.h" -#include "gfx/rect.h" #include "googleurl/src/gurl.h" #include "ipc/ipc_message.h" #include "ipc/ipc_message_utils.h" @@ -18,6 +17,7 @@ #include "printing/page_range.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/skia/include/core/SkBitmap.h" +#include "ui/gfx/rect.h" // Tests that serialize/deserialize correctly understand each other TEST(IPCMessageTest, Serialize) { @@ -118,7 +118,7 @@ TEST(IPCMessageTest, Bitmap) { TEST(IPCMessageTest, ListValue) { ListValue input; - input.Set(0, Value::CreateRealValue(42.42)); + input.Set(0, Value::CreateDoubleValue(42.42)); input.Set(1, Value::CreateStringValue("forty")); input.Set(2, Value::CreateNullValue()); @@ -149,7 +149,7 @@ TEST(IPCMessageTest, DictionaryValue) { subdict->Set("bool", Value::CreateBooleanValue(false)); scoped_ptr<ListValue> sublist(new ListValue()); - sublist->Set(0, Value::CreateRealValue(42.42)); + sublist->Set(0, Value::CreateDoubleValue(42.42)); sublist->Set(1, Value::CreateStringValue("forty")); sublist->Set(2, Value::CreateStringValue("two")); subdict->Set("list", sublist.release()); diff --git a/chrome/common/css_colors.h b/chrome/common/css_colors.h index 9ba36ba..cf4231d 100644 --- a/chrome/common/css_colors.h +++ b/chrome/common/css_colors.h @@ -9,8 +9,8 @@ #include <utility> #include "base/basictypes.h" -#include "third_party/WebKit/WebKit/chromium/public/WebColor.h" -#include "third_party/WebKit/WebKit/chromium/public/WebColorName.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebColor.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebColorName.h" // Functionality related to sending the values of CSS colors to the renderer. class CSSColors { diff --git a/chrome/common/database_util.cc b/chrome/common/database_util.cc index 36abdb8..9e4a99d 100644 --- a/chrome/common/database_util.cc +++ b/chrome/common/database_util.cc @@ -8,7 +8,7 @@ #include "chrome/common/database_messages.h" #include "ipc/ipc_sync_message_filter.h" #include "third_party/sqlite/sqlite3.h" -#include "third_party/WebKit/WebKit/chromium/public/WebString.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h" using WebKit::WebKitClient; using WebKit::WebString; diff --git a/chrome/common/db_message_filter.cc b/chrome/common/db_message_filter.cc index e10bb1d..50cad70 100644 --- a/chrome/common/db_message_filter.cc +++ b/chrome/common/db_message_filter.cc @@ -5,8 +5,8 @@ #include "chrome/common/db_message_filter.h" #include "chrome/common/database_messages.h" -#include "third_party/WebKit/WebKit/chromium/public/WebDatabase.h" -#include "third_party/WebKit/WebKit/chromium/public/WebString.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebDatabase.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h" DBMessageFilter::DBMessageFilter() { } diff --git a/chrome/common/default_plugin.cc b/chrome/common/default_plugin.cc index 3337c7c..61bbc87 100644 --- a/chrome/common/default_plugin.cc +++ b/chrome/common/default_plugin.cc @@ -10,25 +10,20 @@ namespace chrome { void RegisterInternalDefaultPlugin() { - const webkit::npapi::PluginVersionInfo default_plugin = { - FilePath(webkit::npapi::kDefaultPluginLibraryName), - L"Default Plug-in", - L"Provides functionality for installing third-party plug-ins", - L"1", - L"*", - L"", - L"", - { + const webkit::npapi::PluginEntryPoints entry_points = { #if !defined(OS_POSIX) || defined(OS_MACOSX) - default_plugin::NP_GetEntryPoints, + default_plugin::NP_GetEntryPoints, #endif - default_plugin::NP_Initialize, - default_plugin::NP_Shutdown - } + default_plugin::NP_Initialize, + default_plugin::NP_Shutdown }; webkit::npapi::PluginList::Singleton()->RegisterInternalPlugin( - default_plugin); + FilePath(webkit::npapi::kDefaultPluginLibraryName), + "Default Plug-in", + "Provides functionality for installing third-party plug-ins", + "*", + entry_points); } } // namespace chrome diff --git a/chrome/common/desktop_notifications/active_notification_tracker.cc b/chrome/common/desktop_notifications/active_notification_tracker.cc index 7bf619c..3603103 100644 --- a/chrome/common/desktop_notifications/active_notification_tracker.cc +++ b/chrome/common/desktop_notifications/active_notification_tracker.cc @@ -6,8 +6,8 @@ #include "base/message_loop.h" #include "base/scoped_ptr.h" -#include "third_party/WebKit/WebKit/chromium/public/WebNotification.h" -#include "third_party/WebKit/WebKit/chromium/public/WebNotificationPermissionCallback.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebNotification.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebNotificationPermissionCallback.h" using WebKit::WebNotification; using WebKit::WebNotificationPermissionCallback; diff --git a/chrome/common/desktop_notifications/active_notification_tracker.h b/chrome/common/desktop_notifications/active_notification_tracker.h index 2fd8a6a..9610ce4 100644 --- a/chrome/common/desktop_notifications/active_notification_tracker.h +++ b/chrome/common/desktop_notifications/active_notification_tracker.h @@ -11,7 +11,7 @@ #include "base/basictypes.h" #include "base/id_map.h" #include "base/hash_tables.h" -#include "third_party/WebKit/WebKit/chromium/public/WebNotification.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebNotification.h" namespace WebKit { class WebNotificationPermissionCallback; diff --git a/chrome/common/dom_storage_messages.h b/chrome/common/dom_storage_messages.h index e36f517..85db0e6 100644 --- a/chrome/common/dom_storage_messages.h +++ b/chrome/common/dom_storage_messages.h @@ -10,7 +10,7 @@ #include "googleurl/src/gurl.h" #include "ipc/ipc_message_macros.h" #include "ipc/ipc_param_traits.h" -#include "third_party/WebKit/WebKit/chromium/public/WebStorageArea.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebStorageArea.h" #define IPC_MESSAGE_START DOMStorageMsgStart diff --git a/chrome/common/extensions/api/extension_api.json b/chrome/common/extensions/api/extension_api.json index 7709ec2..55c2946 100644 --- a/chrome/common/extensions/api/extension_api.json +++ b/chrome/common/extensions/api/extension_api.json @@ -156,7 +156,7 @@ { "name": "getBackgroundPage", "type": "function", - "description": "Returns the JavaScript 'window' object for the background page running inside the current extension. Returns null if the extension has no backround page.", + "description": "Returns the JavaScript 'window' object for the background page running inside the current extension. Returns null if the extension has no background page.", "parameters": [], "returns": { "type": "object", "isInstanceOf": "DOMWindow", "properties": {}, "additionalProperties": { "type": "any" } @@ -472,29 +472,7 @@ ] }, { - "namespace": "experimental.extension", - "nodoc": true, - "types": [], - "functions": [ - { - "name": "getPopupView", - "type": "function", - "description": "Returns a reference to the JavaScript 'window' object of the popup view. Returns undefined if no popup presently shown.", - "parameters": [], - "returns": { - "type": "object", - "isInstanceOf": "DOMWindow", - "properties": {}, - "additionalProperties": { "type": "any" }, - "optional": true - } - } - ], - "events": [] - }, - { "namespace": "experimental.tts", - "nodoc": true, "functions": [ { "name": "speak", @@ -504,13 +482,13 @@ { "type": "string", "name": "utterance", - "description": "The text to speak." + "description": "The text to speak. May include SSML markup." }, { "type": "object", "name": "options", "optional": true, - "description": "The speak options. This parameter is currently ignored.", + "description": "The speech options.", "properties": { "enqueue": { "type": "boolean", @@ -520,12 +498,12 @@ "voiceName": { "type": "string", "optional": true, - "description": "The name of the voice to use for synthesis." + "description": "The name of the voice to use for synthesis. If empty, uses any available voice." }, "locale": { "type": "string", "optional": true, - "description": "The language and region code that specify the language and dialect to be used for synthesis, in the form <language>-<region>, e.g. en-US, en-GB, fr-CA, zh-CN, etc." + "description": "The language and optional region code that specify the language and dialect to be used for synthesis, in the form <language>-<region>. Examples: 'en', 'en-US', 'en-GB', 'zh-CN', etc." }, "gender": { "type": "string", @@ -538,21 +516,21 @@ "optional": true, "minimum": 0, "maximum": 1, - "description": "Speaking speed between 0 and 1 inclusive, with 0 being slowest and 1 being fastest." + "description": "Speaking speed between 0 and 1 inclusive, with 0 being slowest and 1 being fastest, with a default of 0.5." }, "pitch": { "type": "number", "optional": true, "minimum": 0, "maximum": 1, - "description": "Speaking pitch between 0 and 1 inclusive, with 0 being lowest and 1 being highest." + "description": "Speaking pitch between 0 and 1 inclusive, with 0 being lowest and 1 being highest, with a default of 0.5." }, "volume": { "type": "number", "optional": true, "minimum": 0, "maximum": 1, - "description": "Speaking volume between 0 and 1 inclusive, with 0 being lowest and 1 being highest." + "description": "Speaking volume between 0 and 1 inclusive, with 0 being lowest and 1 being highest, with a default of 1.0." } } }, @@ -617,7 +595,7 @@ { "type": "string", "name": "utterance", - "description": "The text to speak." + "description": "The text to speak. This may include SSML, so if your engine does not support SSML, you should strip out all XML markup and synthesize only the underlying text content." }, { "type": "object", @@ -681,7 +659,7 @@ { "name": "onStop", "type": "function", - "description": "Fired when a call is made to tts.stop and this extension may be in the middle of speaking." + "description": "Fired when a call is made to tts.stop and this extension may be in the middle of speaking. If an extension receives a call to onStop and speech is already stopped, it should do nothing (not raise an error)." } ] }, @@ -2406,94 +2384,6 @@ "events": [] }, { - "namespace": "experimental.popup", - "nodoc": true, - "types": [], - "functions": [ - { - "name": "show", - "type": "function", - "description": "Displays a pop-up window hosting an extension view.", - "parameters": [ - { - "type": "string", - "name": "url", - "description": "The URL of the contents to which the pop-up will be navigated." - }, - { - "type": "object", - "name": "showDetails", - "properties": { - "relativeTo": { - "type": "object", - "properties": {}, - "additionalProperties": { "type": "any" }, - "isInstanceOf": "HTMLElement", - "description": "A HTML DOM object to which the pop-up's position will be made relative." - }, - "giveFocus": { - "type": "boolean", - "description": "Pass true to give the focus to the popup window. The default behaviour is true.", - "optional": true - }, - "borderStyle": { - "type": "string", - "description": "Pass 'bubble' to give the pop-up window a bubble-chrome border, including an arrow pointing at the relative-to point. Pass 'rectangle' to give the pop-up a rectangular black border with drop-shadow. Default behaviour is to pass 'bubble'.", - "optional": true, - "enum": ["bubble", "rectangle"] - }, - "maxSize": { - "type": "object", - "optional": true, - "properties": { - "width": { - "type": "integer", - "description": "The maximal width to which the popup will resize. If not present, the popup will be no wider than 800 pixels. The popup will widen to no larger than the minimum of the width parameter and the width of the screen.", - "optional": true, - "minimum": 32 - }, - "height": { - "type": "integer", - "description": "The maximal height to which the popup will resize. If not present, the popup will be no taller than 600 pixels. The popup will grow to no taller than than the minimum of the height parameter and the width of the screen.", - "optional": true, - "minimum": 32 - } - } - } - } - }, - { - "type": "function", - "name": "callback", - "optional": true, - "parameters": [] - } - ] - }, - { - "name": "getParentWindow", - "type": "function", - "description": "Returns a reference to the JavaScript 'window' object of the extension view that launched the popup. Returns undefined if called outside of a popup window.", - "parameters": [], - "returns": { - "type": "object", - "isInstanceOf": "DOMWindow", - "properties": {}, - "additionalProperties": { "type": "any" }, - "optional": true - } - } - ], - "events": [ - { - "name": "onClosed", - "type": "function", - "description": "Fired when the popup view is closed.", - "parameters": [] - } - ] - }, - { "namespace": "experimental.bookmarkManager", "nodoc": true, "types": [ @@ -2573,10 +2463,18 @@ { "name": "paste", "type": "function", - "description": "Pastes bookmarks from the clipboard into the parent folder", + "description": "Pastes bookmarks from the clipboard into the parent folder after the last selected node", "nodoc": "true", "parameters": [ {"type": "string", "name": "parentId"}, + { + "name": "selectedIdList", + "description": "An array of string-valued ids for selected bookmarks", + "optional": true, + "type": "array", + "items": {"type": "string"}, + "minItems": 0 + }, {"type": "function", "name": "callback", "optional": true, "parameters": []} ] }, @@ -3065,6 +2963,39 @@ ], "functions": [ { + "name": "getEnabled", + "type": "function", + "description": "Get the user preference to send UMA and crash reports to Google.", + "parameters": [ + { + "type": "function", + "name": "callback", + "parameters": [ + {"name": "enabled", "type": "boolean"} + ] + } + ] + }, + { + "name": "setEnabled", + "type": "function", + "description": "Set the user preference to send UMA and crash reports to Google.", + "parameters": [ + {"name": "enabled", "type": "boolean", "description": "True for setting Chrome to actively send UMA and crash reports, false for disabling this."}, + { + "type": "function", + "name": "callback", + "parameters": [ + { + "name": "enabled", + "type": "boolean", + "description": "The actual value set. If it is not the one passed in parameter, the value couldn't be changed (e.g. because of security)." + } + ] + } + ] + }, + { "name": "recordUserAction", "type": "function", "description": "Records an action performed by the user.", @@ -3476,8 +3407,58 @@ }, { "namespace": "experimental.webRequest", - "types": [], - "functions": [], + "types": [ + { + "id": "RequestFilter", + "type": "object", + "description": "An object describing filters to apply to webRequest events.", + "properties": { + "urls": { + "type": "array", + "optional": true, + "description": "A list of URLs or URL patterns. Requests that cannot match any of the URLs will be filtered out.", + "items": { "type": "string" } + }, + "types": { + "type": "array", + "optional": true, + "description": "A list of request types. Requests that cannot match any of the types will be filtered out.", + "items": { "type": "string", "enum": ["main_frame", "sub_frame", "stylesheet", "script", "image", "object", "other"] } + }, + "tabId": { "type": "integer", "optional": true }, + "windowId": { "type": "integer", "optional": true } + } + } + ], + "functions": [ + { + "name": "addEventListener", + "nodoc": true, + "type": "function", + "description": "Used internally to implement the special form of addListener for the webRequest events.", + "parameters": [ + {"type": "function", "name": "callback"}, + { + "$ref": "RequestFilter", + "optional": true, + "name": "filter", + "description": "A set of filters that restricts the events that will be sent to this listener." + }, + { + "type": "array", + "optional": true, + "name": "extraInfoSpec", + "description": "Array of extra information that should be passed to the listener function.", + "items": { + "type": "string", + "enum": ["requestLine", "requestHeaders", "statusLine", "responseHeaders", "redirectRequestLine", "redirectRequestHeaders"] + } + }, + {"type": "string", "name": "eventName"}, + {"type": "string", "name": "subEventName"} + ] + } + ], "events": [ { "name": "onBeforeRequest", @@ -3703,7 +3684,7 @@ "type": "object", "description": "An object encapsulating a single proxy server's specification.", "properties": { - "scheme": {"type": "string", "optional": true, "enum": ["http", "socks", "socks4", "socks5"], "description": "The scheme (protocol) of the proxy server itself."}, + "scheme": {"type": "string", "optional": true, "enum": ["http", "https", "socks", "socks4", "socks5"], "description": "The scheme (protocol) of the proxy server itself."}, "host": {"type": "string", "description": "The URI of the proxy server."}, "port": {"type": "integer", "optional": true, "description": "The port of the proxy server."} } @@ -3711,13 +3692,14 @@ { "id": "ProxyRules", "type": "object", - "description": "An object encapsulating the set of proxy rules for all protocols.", + "description": "An object encapsulating the set of proxy rules for all protocols. Use either 'singleProxy' or (a subset of) 'proxyForHttp', 'proxyForHttps', 'proxyForFtp' and 'socksProxy'.", "properties": { "singleProxy": {"$ref": "ProxyServer", "optional": true, "description": "The proxy server to be used for all per-URL requests (i.e., http, https, and ftp)."}, "proxyForHttp": {"$ref": "ProxyServer", "optional": true, "description": "The proxy server to be used for HTTP requests."}, "proxyForHttps": {"$ref": "ProxyServer", "optional": true, "description": "The proxy server to be used for HTTPS requests."}, "proxyForFtp": {"$ref": "ProxyServer", "optional": true, "description": "The proxy server to be used for FTP requests."}, - "socksProxy": {"$ref": "ProxyServer", "optional": true, "description": "The proxy server to be used for SOCKS requests."} + "socksProxy": {"$ref": "ProxyServer", "optional": true, "description": "The proxy server to be used for SOCKS requests."}, + "bypassList": {"type": "array", "items": {"type": "string"}, "optional": true, "description": "List of servers to connect to without a proxy server."} } }, { @@ -3733,8 +3715,8 @@ "type": "object", "description": "An object encapsulating a complete proxy configuration.", "properties": { - "rules": {"$ref": "ProxyRules", "optional": true, "description": "The proxy rules describing this configuration."}, - "pacScript": {"$ref": "PacScript", "optional": true, "description": "The proxy auto-config (PAC) script for this configuration."}, + "rules": {"$ref": "ProxyRules", "optional": true, "description": "The proxy rules describing this configuration. Use this for 'fixed_servers' mode."}, + "pacScript": {"$ref": "PacScript", "optional": true, "description": "The proxy auto-config (PAC) script for this configuration. Use this for 'pac_script' mode."}, "mode": { "type": "string", "enum": ["direct", "auto_detect", "pac_script", "fixed_servers", "system"], @@ -3749,7 +3731,52 @@ "type": "function", "description": "Apply the given proxy configuration.", "parameters": [ - {"name": "config", "$ref": "ProxyConfig"} + { + "name": "config", + "$ref": "ProxyConfig" + }, + { + "name": "incognito", + "type": "boolean", + "description": "If true, the proxy settings apply only to incognito windows. Otherwise they apply to regular windows (and incognito windows if no specific settings are provided for incognito windows)", + "optional": true + } + ] + }, + { + "name": "removeCustomProxySettings", + "type": "function", + "description": "Remove a custom proxy set by the current extension. This is the inverse of useCustomProxySettings.", + "parameters": [ + { + "name": "incognito", + "type": "boolean", + "description": "See incognito parameter of useCustomProxySettings.", + "optional": true + } + ] + }, + { + "name": "getCurrentProxySettings", + "type": "function", + "description": "Returns the currently effective proxy settings. These can originate from default values, command line options, the extension settings API, policies and possibly other sources in the future.", + "parameters": [ + { + "name": "incognito", + "type": "boolean", + "description": "See incognito parameter of useCustomProxySettings." + }, + { + "name": "callback", + "type": "function", + "parameters": [ + { + "name": "config", + "$ref": "ProxyConfig", + "description": "Configuration, not necessarily a literal copy of the configuration passed to useCustomProxySettings." + } + ] + } ] } ] @@ -3875,7 +3902,7 @@ { "name": "navigate", "type": "function", - "description": "Navigates sidebar for the specified tab to the specified URL.", + "description": "Loads the the specified html file into the sidebar for the specified tab.", "parameters": [ { "type": "object", @@ -3887,7 +3914,10 @@ "optional": true, "description": "Defaults to the selected tab of the <a href='windows.html#current-window'>current window</a>." }, - "url": { "type": "string" } + "path": { + "type": "string", + "description": "Relative path to the html file in the extension to show in the sidebar." + } } } ] diff --git a/chrome/common/extensions/docs/README.txt b/chrome/common/extensions/docs/README.txt index b056210..ea0c0fa 100644 --- a/chrome/common/extensions/docs/README.txt +++ b/chrome/common/extensions/docs/README.txt @@ -35,10 +35,10 @@ To build the extension docs, run the build.py script in the ./build directory. This will regenerate the docs and report which, if any, files have changed and need to be included in the changelist that changed the dependent files. -Note that the build.py script depends on test_shell to run, so you must be -able to build test_shell to build extension_docs. The build.py script will -look in typical locations for the test_shell executable, but you may set -the path to test_shell explicitly with --test-shell-path. +Note that the build.py script depends on DumpRenderTree to run, so you must be +able to build DumpRenderTree to build extension_docs. The build.py script will +look in typical locations for the DumpRenderTree executable, but you may set +the path to DumpRenderTree explicitly with --dump-render-tree-path. -------------------------------------------------------------------------------- Design diff --git a/chrome/common/extensions/docs/a11y.html b/chrome/common/extensions/docs/a11y.html index d18f6f7..356c452 100644 --- a/chrome/common/extensions/docs/a11y.html +++ b/chrome/common/extensions/docs/a11y.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -300,7 +310,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -308,7 +318,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -815,8 +825,8 @@ see <a href="samples.html">Samples</a>. </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -891,10 +901,9 @@ see <a href="samples.html">Samples</a>. </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -912,14 +921,15 @@ see <a href="samples.html">Samples</a>. </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/api_index.html b/chrome/common/extensions/docs/api_index.html index af8e72b..fcfd737 100644 --- a/chrome/common/extensions/docs/api_index.html +++ b/chrome/common/extensions/docs/api_index.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -281,7 +291,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -289,7 +299,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -382,8 +392,8 @@ For more information, see the video </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -458,10 +468,9 @@ For more information, see the video </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -479,14 +488,15 @@ For more information, see the video </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/api_other.html b/chrome/common/extensions/docs/api_other.html index 7a0077e..3490961 100644 --- a/chrome/common/extensions/docs/api_other.html +++ b/chrome/common/extensions/docs/api_other.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -267,7 +277,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -275,7 +285,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -414,8 +424,8 @@ just as they do in other web pages. </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -490,10 +500,9 @@ just as they do in other web pages. </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -511,14 +520,15 @@ just as they do in other web pages. </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/apps.html b/chrome/common/extensions/docs/apps.html index 7a79f45..8130ad6 100644 --- a/chrome/common/extensions/docs/apps.html +++ b/chrome/common/extensions/docs/apps.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -281,7 +291,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -289,7 +299,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -512,8 +522,8 @@ basic concepts about extensions. </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -588,10 +598,9 @@ basic concepts about extensions. </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -609,14 +618,15 @@ basic concepts about extensions. </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/autoupdate.html b/chrome/common/extensions/docs/autoupdate.html index d3aaf51..69d7c31 100644 --- a/chrome/common/extensions/docs/autoupdate.html +++ b/chrome/common/extensions/docs/autoupdate.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -302,7 +312,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -310,7 +320,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -471,8 +481,8 @@ Another option is to use the --extensions-update-frequency command-line flag to </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -547,10 +557,9 @@ Another option is to use the --extensions-update-frequency command-line flag to </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -568,14 +577,15 @@ Another option is to use the --extensions-update-frequency command-line flag to </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/background_pages.html b/chrome/common/extensions/docs/background_pages.html index 85d9b99..2516499 100644 --- a/chrome/common/extensions/docs/background_pages.html +++ b/chrome/common/extensions/docs/background_pages.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -281,7 +291,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -289,7 +299,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -464,8 +474,8 @@ from a file named <code>image.html</code>. </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -540,10 +550,9 @@ from a file named <code>image.html</code>. </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -561,14 +570,15 @@ from a file named <code>image.html</code>. </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/bookmarks.html b/chrome/common/extensions/docs/bookmarks.html index 33dd392..71ff4c2 100644 --- a/chrome/common/extensions/docs/bookmarks.html +++ b/chrome/common/extensions/docs/bookmarks.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -281,7 +291,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a href="#global-methods">Methods</a> <ol> <li> <a href="#method-create">create</a> @@ -311,7 +321,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a href="#global-events">Events</a> <ol> <li> <a href="#event-onChanged">onChanged</a> @@ -464,8 +474,8 @@ For other examples and for help in viewing the source code, see </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a name="global-methods"></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -587,6 +597,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -647,6 +667,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -707,6 +737,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -767,6 +807,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -777,6 +827,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -837,6 +897,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -925,6 +995,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1080,6 +1160,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1140,6 +1230,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1239,6 +1339,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1330,6 +1440,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1390,6 +1510,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1489,6 +1619,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1578,6 +1718,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1638,6 +1788,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1737,6 +1897,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1827,6 +1997,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1926,6 +2106,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2084,6 +2274,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2191,6 +2391,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2251,6 +2461,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2261,6 +2481,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2321,6 +2551,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2409,6 +2649,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2500,6 +2750,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2560,6 +2820,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2682,6 +2952,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2742,6 +3022,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2864,6 +3154,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2924,6 +3224,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3023,6 +3333,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3115,6 +3435,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3222,6 +3552,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3282,6 +3622,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3292,6 +3642,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3352,6 +3712,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3440,6 +3810,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3465,10 +3845,9 @@ For other examples and for help in viewing the source code, see </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a name="global-events"></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a name="event-onChanged"></a> @@ -3484,10 +3863,11 @@ For other examples and for help in viewing the source code, see <p>Fired when a bookmark or folder changes. <b>Note:</b> Currently, only title and url changes trigger this.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>id</var> <em> @@ -3540,14 +3920,24 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div><div> - <div> + </div><div> + <div> <dt> <var>changeInfo</var> <em> @@ -3647,6 +4037,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3707,6 +4107,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3717,15 +4127,25 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -3742,10 +4162,11 @@ For other examples and for help in viewing the source code, see <p>Fired when the children of a folder have changed their order due to the order being sorted in the UI. This is not called as a result of a move().</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>id</var> <em> @@ -3798,14 +4219,24 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div><div> - <div> + </div><div> + <div> <dt> <var>reorderInfo</var> <em> @@ -3916,6 +4347,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3926,15 +4367,25 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -3951,10 +4402,11 @@ For other examples and for help in viewing the source code, see <p>Fired when a bookmark or folder is created.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>id</var> <em> @@ -4007,14 +4459,24 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div><div> - <div> + </div><div> + <div> <dt> <var>bookmark</var> <em> @@ -4067,15 +4529,25 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -4092,14 +4564,15 @@ For other examples and for help in viewing the source code, see <p>Fired when a bookmark import session is begun. Expensive observers should ignore handleCreated updates until onImportEnded is fired. Observers should still handle other notifications immediately.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div style="display: none; "> + <div style="display: none; "> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -4116,14 +4589,15 @@ For other examples and for help in viewing the source code, see <p>Fired when a bookmark import session is ended.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div style="display: none; "> + <div style="display: none; "> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -4140,10 +4614,11 @@ For other examples and for help in viewing the source code, see <p>Fired when a bookmark or folder is moved to a different parent folder.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>id</var> <em> @@ -4196,14 +4671,24 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div><div> - <div> + </div><div> + <div> <dt> <var>moveInfo</var> <em> @@ -4303,6 +4788,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -4363,6 +4858,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -4423,6 +4928,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -4483,6 +4998,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -4493,15 +5018,25 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -4518,10 +5053,11 @@ For other examples and for help in viewing the source code, see <p>Fired when a bookmark or folder is removed. When a folder is removed recursively, a single notification is fired for the folder, and none for its contents.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>id</var> <em> @@ -4574,14 +5110,24 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div><div> - <div> + </div><div> + <div> <dt> <var>removeInfo</var> <em> @@ -4681,6 +5227,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -4741,6 +5297,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -4751,15 +5317,25 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> @@ -4872,6 +5448,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -4930,6 +5516,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -4988,6 +5584,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -5046,6 +5652,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -5104,6 +5720,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -5162,6 +5788,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -5220,6 +5856,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -5289,6 +5935,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -5299,6 +5955,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> diff --git a/chrome/common/extensions/docs/browserAction.html b/chrome/common/extensions/docs/browserAction.html index f8b505f..5ed7b39 100644 --- a/chrome/common/extensions/docs/browserAction.html +++ b/chrome/common/extensions/docs/browserAction.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -294,7 +304,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a href="#global-methods">Methods</a> <ol> <li> <a href="#method-setBadgeBackgroundColor">setBadgeBackgroundColor</a> @@ -310,7 +320,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a href="#global-events">Events</a> <ol> <li> <a href="#event-onClicked">onClicked</a> @@ -385,7 +395,7 @@ like this: "name": "My extension", ... <b>"browser_action": { - "default_icon": "images/icon19.png", <em>// <b>required</b></em> + "default_icon": "images/icon19.png", <em>// optional</em> "default_title": "Google Mail", <em>// optional; shown in tooltip</em> "default_popup": "popup.html" <em>// optional</em> }</b>, @@ -395,8 +405,7 @@ like this: <h2 id="ui">Parts of the UI</h2> <p> -A browser action must have an <a href="#icon">icon</a>. -It can also have +A browser action can have an <a href="#icon">icon</a>, a <a href="#tooltip">tooltip</a>, a <a href="#badge">badge</a>, and a <a href="#popups">popup</a>. @@ -540,8 +549,8 @@ For other examples and for help in viewing the source code, see </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a name="global-methods"></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -671,6 +680,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -729,6 +748,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -739,6 +768,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -905,6 +944,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -963,6 +1012,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -973,6 +1032,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1139,6 +1208,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1197,6 +1276,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1255,6 +1344,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1265,6 +1364,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1431,6 +1540,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1489,6 +1608,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1499,6 +1628,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1665,6 +1804,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1723,6 +1872,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1733,6 +1892,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1789,10 +1958,9 @@ For other examples and for help in viewing the source code, see </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a name="global-events"></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a name="event-onClicked"></a> @@ -1808,10 +1976,11 @@ For other examples and for help in viewing the source code, see <p>Fired when a browser action icon is clicked. This event will not fire if the browser action has a popup.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>tab</var> <em> @@ -1864,15 +2033,25 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/build/build.py b/chrome/common/extensions/docs/build/build.py index 220924e..336756e 100755 --- a/chrome/common/extensions/docs/build/build.py +++ b/chrome/common/extensions/docs/build/build.py @@ -18,6 +18,8 @@ from optparse import OptionParser _script_path = os.path.realpath(__file__) _build_dir = os.path.dirname(_script_path) _base_dir = os.path.normpath(_build_dir + "/..") +_webkit_dir = _base_dir + "/../../../../third_party/WebKit" +_devtools_dir = _webkit_dir + "/Source/WebCore/inspector/front-end" _static_dir = _base_dir + "/static" _js_dir = _base_dir + "/js" _template_dir = _base_dir + "/template" @@ -25,6 +27,7 @@ _samples_dir = _base_dir + "/examples" _extension_api_dir = os.path.normpath(_base_dir + "/../api") _extension_api_json = _extension_api_dir + "/extension_api.json" +_devtools_api_json = _devtools_dir + "/ExtensionAPISchema.json" _api_template_html = _template_dir + "/api_template.html" _page_shell_html = _template_dir + "/page_shell.html" _generator_html = _build_dir + "/generator.html" @@ -42,9 +45,9 @@ from directory import Sample from directory import ApiManifest from directory import SamplesManifest -def RenderPages(names, test_shell): +def RenderPages(names, dump_render_tree): """ - Calls test_shell --layout-tests .../generator.html?<names> and writes the + Calls DumpRenderTree .../generator.html?<names> and writes the results to .../docs/<name>.html """ if not names: @@ -67,11 +70,11 @@ def RenderPages(names, test_shell): shutil.copy(_page_shell_html, input_file) - # Run test_shell and capture result - test_shell_timeout = 1000 * 60 * 5 # five minutes + # Run DumpRenderTree and capture result + dump_render_tree_timeout = 1000 * 60 * 5 # five minutes p = Popen( - [test_shell, "--layout-tests", "--time-out-ms=%s" % test_shell_timeout, - generator_url], + [dump_render_tree, "--test-shell", + "%s %s" % (generator_url, dump_render_tree_timeout)], stdout=PIPE) # The remaining output will be the content of the generated pages. @@ -82,21 +85,22 @@ def RenderPages(names, test_shell): end = output.rfind(_expected_output_postamble) if (begin < 0 or end < 0): - raise Exception ("test_shell returned invalid output:\n\n" + output) + raise Exception("%s returned invalid output:\n\n%s" % + (dump_render_tree, output)) begin += len(_expected_output_preamble) try: output_parsed = json.loads(output[begin:end]) except ValueError, msg: - raise Exception("Could not parse test_shell output as JSON. Error: " + msg + - "\n\nOutput was:\n" + output) + raise Exception("Could not parse DumpRenderTree output as JSON. Error: " + + msg + "\n\nOutput was:\n" + output) changed_files = [] for name in names: result = output_parsed[name].encode("utf8") + '\n' - # Remove CRs that are appearing from captured test_shell output. + # Remove CRs that are appearing from captured DumpRenderTree output. result = result.replace('\r', '') # Remove page_shell @@ -111,8 +115,8 @@ def RenderPages(names, test_shell): return changed_files -def FindTestShell(): - # This is hacky. It is used to guess the location of the test_shell +def FindDumpRenderTree(): + # This is hacky. It is used to guess the location of the DumpRenderTree chrome_dir = os.path.normpath(_base_dir + "/../../../") src_dir = os.path.normpath(chrome_dir + "/../") @@ -120,34 +124,36 @@ def FindTestShell(): if (sys.platform in ('cygwin', 'win32')): home_dir = os.path.normpath(os.getenv("HOMEDRIVE") + os.getenv("HOMEPATH")) - search_locations.append(chrome_dir + "/Release/test_shell.exe") - search_locations.append(chrome_dir + "/Debug/test_shell.exe") - search_locations.append(home_dir + "/bin/test_shell/" + - "test_shell.exe") + search_locations.append(chrome_dir + "/Release/DumpRenderTree.exe") + search_locations.append(chrome_dir + "/Debug/DumpRenderTree.exe") + search_locations.append(home_dir + "/bin/DumpRenderTree/" + "DumpRenderTree.exe") if (sys.platform in ('linux', 'linux2')): - search_locations.append(src_dir + "/sconsbuild/Release/test_shell") - search_locations.append(src_dir + "/out/Release/test_shell") - search_locations.append(src_dir + "/sconsbuild/Debug/test_shell") - search_locations.append(src_dir + "/out/Debug/test_shell") - search_locations.append(os.getenv("HOME") + "/bin/test_shell/test_shell") + search_locations.append(src_dir + "/sconsbuild/Release/DumpRenderTree") + search_locations.append(src_dir + "/out/Release/DumpRenderTree") + search_locations.append(src_dir + "/sconsbuild/Debug/DumpRenderTree") + search_locations.append(src_dir + "/out/Debug/DumpRenderTree") + search_locations.append(os.getenv("HOME") + "/bin/DumpRenderTree/" + "DumpRenderTree") if (sys.platform == 'darwin'): search_locations.append(src_dir + - "/xcodebuild/Release/TestShell.app/Contents/MacOS/TestShell") + "/xcodebuild/Release/DumpRenderTree.app/Contents/MacOS/DumpRenderTree") search_locations.append(src_dir + - "/xcodebuild/Debug/TestShell.app/Contents/MacOS/TestShell") - search_locations.append(os.getenv("HOME") + "/bin/test_shell/" + - "TestShell.app/Contents/MacOS/TestShell") + "/xcodebuild/Debug/DumpRenderTree.app/Contents/MacOS/DumpRenderTree") + search_locations.append(os.getenv("HOME") + "/bin/DumpRenderTree/" + + "DumpRenderTree.app/Contents/MacOS/DumpRenderTree") for loc in search_locations: if os.path.isfile(loc): return loc - raise Exception("Could not find test_shell executable\n" + - "**test_shell may need to be built**\n" + - "Searched: \n" + "\n".join(search_locations) + "\n" + - "To specify a path to test_shell use --test-shell-path") + raise Exception("Could not find DumpRenderTree executable\n" + "**DumpRenderTree may need to be built**\n" + "Searched: \n" + "\n".join(search_locations) + "\n" + "To specify a path to DumpRenderTree use " + "--dump-render-tree-path") def GetStaticFileNames(): static_files = os.listdir(_static_dir) @@ -162,29 +168,34 @@ def main(): "build.sh script instead, which uses depot_tools python.") parser = OptionParser() - parser.add_option("--test-shell-path", dest="test_shell_path", + parser.add_option("--dump-render-tree-path", dest="dump_render_tree_path", metavar="PATH", - help="path to test_shell executable") + help="path to DumpRenderTree executable") parser.add_option("--page-name", dest="page_name", metavar="PAGE", help="only generate docs for PAGE.html") parser.add_option("--nozip", dest="zips", action="store_false", help="do not generate zip files for samples", default=True) - (options, args) = parser.parse_args() + options, args = parser.parse_args() - if (options.test_shell_path and os.path.isfile(options.test_shell_path)): - test_shell = options.test_shell_path + if (options.dump_render_tree_path and + os.path.isfile(options.dump_render_tree_path)): + dump_render_tree = options.dump_render_tree_path else: - test_shell = FindTestShell() + dump_render_tree = FindDumpRenderTree() # Load the manifest of existing API Methods api_manifest = ApiManifest(_extension_api_json) + # DevTools API is maintained separately, in WebCore land + devtools_api_manifest = ApiManifest(_devtools_api_json) + # Read static file names static_names = GetStaticFileNames() # Read module names - module_names = api_manifest.getModuleNames() + module_names = (api_manifest.getModuleNames() | + devtools_api_manifest.getModuleNames()) # All pages to generate page_names = static_names | module_names @@ -208,7 +219,7 @@ def main(): else: modified_zips = [] - modified_files = RenderPages(page_names, test_shell) + modified_files = RenderPages(page_names, dump_render_tree) modified_files.extend(modified_zips) if len(modified_files) == 0: diff --git a/chrome/common/extensions/docs/build/build.sh b/chrome/common/extensions/docs/build/build.sh index 2082f66..eec460e 100755 --- a/chrome/common/extensions/docs/build/build.sh +++ b/chrome/common/extensions/docs/build/build.sh @@ -27,7 +27,7 @@ if [ "$(uname | cut -b1-6)" == "CYGWIN" ] ; then # The output from build.py doesn't seem seem to print to the console until # it's finished, so print a message so people don't think it's hung. echo "Running - this can take about a minute" - echo "(it goes faster if you have a Release build of test_shell)" + echo "(it goes faster if you have a Release build of DumpRenderTree)" $PYTHON_PATH $BUILD_DIR/build.py $* else diff --git a/chrome/common/extensions/docs/build/directory.py b/chrome/common/extensions/docs/build/directory.py index 04c748f..a58ea87 100644 --- a/chrome/common/extensions/docs/build/directory.py +++ b/chrome/common/extensions/docs/build/directory.py @@ -631,7 +631,10 @@ class Sample(dict): zip_filename = self._get_zip_filename() zip_path = os.path.join(sample_parentpath, zip_filename) - zip_manifest_path = os.path.join(sample_dirname, 'manifest.json') + # we pass zip_manifest_path to zipfile.getinfo(), which chokes on + # backslashes, so don't rely on os.path.join, use forward slash on + # all platforms. + zip_manifest_path = sample_dirname + '/manifest.json' zipfile.ZipFile.debug = 3 diff --git a/chrome/common/extensions/docs/content_scripts.html b/chrome/common/extensions/docs/content_scripts.html index e64f704..e044dca 100644 --- a/chrome/common/extensions/docs/content_scripts.html +++ b/chrome/common/extensions/docs/content_scripts.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -316,7 +326,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -324,7 +334,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -820,8 +830,8 @@ sending a request to its parent extension. </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -896,10 +906,9 @@ sending a request to its parent extension. </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -917,14 +926,15 @@ sending a request to its parent extension. </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/contextMenus.html b/chrome/common/extensions/docs/contextMenus.html index 981c17d..f76f8c3 100644 --- a/chrome/common/extensions/docs/contextMenus.html +++ b/chrome/common/extensions/docs/contextMenus.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -274,7 +284,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a href="#global-methods">Methods</a> <ol> <li> <a href="#method-create">create</a> @@ -288,7 +298,7 @@ </ol> </li> <li style="display: none; "> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -392,8 +402,8 @@ You can find samples of this API on the </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a name="global-methods"></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -513,6 +523,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -571,6 +591,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -629,6 +659,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -698,6 +738,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -756,6 +806,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div> @@ -813,6 +873,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -871,6 +941,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -935,6 +1015,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1004,6 +1094,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1073,6 +1173,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1083,6 +1193,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1141,6 +1261,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1205,6 +1335,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1316,6 +1456,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1374,6 +1524,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1493,6 +1653,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1614,6 +1784,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1719,6 +1899,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1779,6 +1969,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1839,6 +2039,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1910,6 +2120,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1970,6 +2190,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2028,6 +2258,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2099,6 +2339,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2170,6 +2420,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2180,6 +2440,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2238,6 +2508,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2294,10 +2574,9 @@ You can find samples of this API on the </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup" style="display: none; "> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup" style="display: none; "> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -2315,14 +2594,15 @@ You can find samples of this API on the </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> @@ -2435,6 +2715,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2493,6 +2783,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2551,6 +2851,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2609,6 +2919,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2667,6 +2987,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2725,6 +3055,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2783,6 +3123,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2841,6 +3191,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2899,6 +3259,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2909,6 +3279,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> diff --git a/chrome/common/extensions/docs/cookies.html b/chrome/common/extensions/docs/cookies.html index f45e8ef..247b976 100644 --- a/chrome/common/extensions/docs/cookies.html +++ b/chrome/common/extensions/docs/cookies.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -274,7 +284,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a href="#global-methods">Methods</a> <ol> <li> <a href="#method-get">get</a> @@ -290,7 +300,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a href="#global-events">Events</a> <ol> <li> <a href="#event-onChanged">onChanged</a> @@ -380,8 +390,8 @@ see <a href="samples.html">Samples</a>. </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a name="global-methods"></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -499,6 +509,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -557,6 +577,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -615,6 +645,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -625,6 +665,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -685,6 +735,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -771,6 +831,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -905,6 +975,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -963,6 +1043,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1021,6 +1111,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1079,6 +1179,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1137,6 +1247,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1195,6 +1315,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1253,6 +1383,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1263,6 +1403,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1323,6 +1473,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1420,6 +1580,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1510,6 +1680,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1607,6 +1787,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1740,6 +1930,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1798,6 +1998,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1856,6 +2066,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1866,6 +2086,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2030,6 +2260,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2088,6 +2328,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2146,6 +2396,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2204,6 +2464,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2262,6 +2532,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2320,6 +2600,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2378,6 +2668,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2436,6 +2736,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2494,6 +2804,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2504,6 +2824,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2560,10 +2890,9 @@ see <a href="samples.html">Samples</a>. </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a name="global-events"></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a name="event-onChanged"></a> @@ -2579,10 +2908,11 @@ see <a href="samples.html">Samples</a>. <p>Fired when a cookie is set or removed.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>changeInfo</var> <em> @@ -2680,6 +3010,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2738,6 +3078,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2748,15 +3098,25 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> @@ -2869,6 +3229,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2927,6 +3297,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2985,6 +3365,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3043,6 +3433,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3101,6 +3501,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3159,6 +3569,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3217,6 +3637,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3275,6 +3705,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3333,6 +3773,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3391,6 +3841,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3401,6 +3861,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3508,6 +3978,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3577,6 +4057,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3587,6 +4077,16 @@ see <a href="samples.html">Samples</a>. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> diff --git a/chrome/common/extensions/docs/crx.html b/chrome/common/extensions/docs/crx.html index 9a72d60..dafb0eb 100644 --- a/chrome/common/extensions/docs/crx.html +++ b/chrome/common/extensions/docs/crx.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -290,7 +300,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -298,7 +308,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -497,8 +507,8 @@ echo "Wrote $crx" </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -573,10 +583,9 @@ echo "Wrote $crx" </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -594,14 +603,15 @@ echo "Wrote $crx" </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/css/ApiRefStyles.css b/chrome/common/extensions/docs/css/ApiRefStyles.css index 5759b38..3a7040f 100644 --- a/chrome/common/extensions/docs/css/ApiRefStyles.css +++ b/chrome/common/extensions/docs/css/ApiRefStyles.css @@ -135,16 +135,6 @@ h4 { font-size:110% } -#gc-pagecontent h1 { - font-size:130%; - font-weight:bold; - margin:2em 0 0 -10px; - padding:1px 3px; - position:relative; - border-top:1px solid #36C; - background-color:#e5ecf9 -} - .labs #gc-pagecontent h1 { background-color:#dcf6db; border-top:1px solid #090 @@ -155,39 +145,6 @@ h4 { border-top:1px solid #333 } -#gc-pagecontent h2 { - font-size:130%; - font-weight:bold; - margin:1.5em 0 0 0 -} - -#gc-pagecontent h3 { - font-size:110%; - margin:.7em 0 0 0; - position:relative; - top:.4em -} - -#gc-pagecontent h4 { - font-size:100%; - font-weight:bold; - margin:.6em 0 0 0; - position:relative; - top:.4em; - z-index:5 -} - -#gc-pagecontent h5 { - font-size:100%; - font-weight:normal; - font-style:italic; - text-decoration:underline; - margin:.4em 0 0 0; - position:relative; - top:.4em; - z-index:5 -} - /* This next set of rules for headings comes from the Codesite "semantic_headers.css" file. */ #gc-pagecontent h1 { @@ -257,6 +214,11 @@ h4 { background:none } +#gc-pagecontent .apiItem h3 { + margin-top: 1em; + font-size:110%; +} + ol,ul { padding:0; margin:.5em 0 0 15px; @@ -1282,7 +1244,8 @@ div.summary .subdued { .apiGroup div.summary { border: 1px solid rgb(147, 180, 217); font-family: "Courier New", courier, monospace; - padding: 0.5em; + padding: 0.5em 0.5em 0.5em 2em; + text-indent: -1.5em; background-color: rgb(202, 222, 244); margin-top: 1em; } @@ -1317,6 +1280,14 @@ p#classSummary { .apiItem { } +.apiGroup .apiItem { + margin-bottom: 2em; +} + +.apiItem .apiItem { + margin-bottom: 0px; +} + div.note { background-color: rgb(202, 222, 244); border: 1px solid rgb(147, 180, 217); @@ -1376,4 +1347,3 @@ table.noborders td { margin: 1.3em 1em 0 0; padding: 0; } - diff --git a/chrome/common/extensions/docs/devguide.html b/chrome/common/extensions/docs/devguide.html index 8e489a6..dd69d13 100644 --- a/chrome/common/extensions/docs/devguide.html +++ b/chrome/common/extensions/docs/devguide.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -267,7 +277,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -275,7 +285,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -466,8 +476,8 @@ applies to packaged apps, as well as extensions. </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -542,10 +552,9 @@ applies to packaged apps, as well as extensions. </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -563,14 +572,15 @@ applies to packaged apps, as well as extensions. </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/docs.html b/chrome/common/extensions/docs/docs.html index baab851..81fce56 100644 --- a/chrome/common/extensions/docs/docs.html +++ b/chrome/common/extensions/docs/docs.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -267,7 +277,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -275,7 +285,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -469,8 +479,8 @@ The following table lists the doc locations and explains how they differ. </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -545,10 +555,9 @@ The following table lists the doc locations and explains how they differ. </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -566,14 +575,15 @@ The following table lists the doc locations and explains how they differ. </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/events.html b/chrome/common/extensions/docs/events.html index 3136703..583250e 100644 --- a/chrome/common/extensions/docs/events.html +++ b/chrome/common/extensions/docs/events.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -267,7 +277,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -275,7 +285,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -374,8 +384,8 @@ bool hasListener(function callback(...)) </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -450,10 +460,9 @@ bool hasListener(function callback(...)) </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -471,14 +480,15 @@ bool hasListener(function callback(...)) </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/examples/api/bookmarks/basic.zip b/chrome/common/extensions/docs/examples/api/bookmarks/basic.zip Binary files differindex 02d772f..0d61e73 100644 --- a/chrome/common/extensions/docs/examples/api/bookmarks/basic.zip +++ b/chrome/common/extensions/docs/examples/api/bookmarks/basic.zip diff --git a/chrome/common/extensions/docs/examples/api/bookmarks/basic/popup.html b/chrome/common/extensions/docs/examples/api/bookmarks/basic/popup.html index 00919c2..377b74a 100644 --- a/chrome/common/extensions/docs/examples/api/bookmarks/basic/popup.html +++ b/chrome/common/extensions/docs/examples/api/bookmarks/basic/popup.html @@ -1,6 +1,6 @@ <html> <head> -<link type="text/css" href="http://jqueryui.com/themes/base/ui.all.css" rel="stylesheet"> +<link type="text/css" href="http://ajax.googleapis.com/ajax/libs/jqueryui/1.7.2/themes/base/jquery-ui.css" rel="stylesheet"> <style> div, td, th { color: black; } </style> @@ -48,7 +48,7 @@ div, td, th { color: black; } }); var span = $('<span>'); var options = bookmarkNode.children ? - $('<span>[<a href="#" id='addlink'>Add</a>]</span>') : + $('<span>[<a href="#" id="addlink">Add</a>]</span>') : $('<span>[<a id="editlink" href="#">Edit</a> <a id="deletelink" ' + 'href="#">Delete</a>]</span>'); var edit = bookmarkNode.children ? $('<table><tr><td>Name</td><td>' + diff --git a/chrome/common/extensions/docs/examples/api/contextMenus/basic.zip b/chrome/common/extensions/docs/examples/api/contextMenus/basic.zip Binary files differindex 5c942c4..af4689f 100644 --- a/chrome/common/extensions/docs/examples/api/contextMenus/basic.zip +++ b/chrome/common/extensions/docs/examples/api/contextMenus/basic.zip diff --git a/chrome/common/extensions/docs/examples/api/cookies.zip b/chrome/common/extensions/docs/examples/api/cookies.zip Binary files differindex 30bf11a..561ac09 100644 --- a/chrome/common/extensions/docs/examples/api/cookies.zip +++ b/chrome/common/extensions/docs/examples/api/cookies.zip diff --git a/chrome/common/extensions/docs/examples/apps/background-simple.zip b/chrome/common/extensions/docs/examples/apps/background-simple.zip Binary files differnew file mode 100644 index 0000000..6886e53 --- /dev/null +++ b/chrome/common/extensions/docs/examples/apps/background-simple.zip diff --git a/chrome/common/extensions/docs/examples/apps/background-simple/README b/chrome/common/extensions/docs/examples/apps/background-simple/README new file mode 100644 index 0000000..dc74c5a --- /dev/null +++ b/chrome/common/extensions/docs/examples/apps/background-simple/README @@ -0,0 +1,19 @@ +This example demonstrates background window functionality in a hosted app. +To run the app, you first need to edit it and install it: + +1. Put index.html and background.html in a directory where the HTTP server + can find them. + +2. Edit manifest.json. Search for SOME_, replacing the text with URLs + pointing to the launch page (index.html) and to the directory where + index.html and background.html live. + +3. Install the app from manifest.json. You can use the Load unpacked extension + button on the chrome://extensions page. + +Once the app is installed, you can launch it by clicking its icon on the +New Tab page. + +For more information, see the documentation: + + http://code.google.com/chrome/apps/docs/developers_guide.html diff --git a/chrome/common/extensions/docs/examples/apps/background-simple/background.html b/chrome/common/extensions/docs/examples/apps/background-simple/background.html new file mode 100644 index 0000000..12d906e --- /dev/null +++ b/chrome/common/extensions/docs/examples/apps/background-simple/background.html @@ -0,0 +1,14 @@ +<!DOCTYPE html> +<!-- + * Copyright (c) 2009 The Chromium Authors. All rights reserved. Use of this + * source code is governed by a BSD-style license that can be found in the + * LICENSE file. +--> +<html> + <script> + var notification = webkitNotifications.createNotification("", + "Simple Background App", + "A background window has been created"); + notification.show(); + </script> +</html> diff --git a/chrome/common/extensions/docs/examples/apps/background-simple/index.html b/chrome/common/extensions/docs/examples/apps/background-simple/index.html new file mode 100644 index 0000000..e5da99b --- /dev/null +++ b/chrome/common/extensions/docs/examples/apps/background-simple/index.html @@ -0,0 +1,70 @@ +<!DOCTYPE html> +<!-- + * Copyright (c) 2009 The Chromium Authors. All rights reserved. Use of this + * source code is governed by a BSD-style license that can be found in the + * LICENSE file. +--> +<html> + <head> + <title> Simple Background App </title> + <style> + .hidden { display: none; } + #unsupported { color: #d00; } + </style> + </head> + <body> + <h1> Simple Background App </h1> + <p id="supported" class="hidden"> + <button onclick="openBackgroundWindow()">Open background window</button> + <button onclick="closeBackgroundWindow()">Close background window</button> + </p> + <p id="unsupported" class="hidden"> + You are not using Chrome or have not installed the application for this + page. + </p> + <script> + // Check for support + if (window.chrome && window.chrome.app && window.chrome.app.isInstalled) { + document.getElementById('supported').className = ''; + } else { + document.getElementById('unsupported').className = ''; + } + var bgWinUrl = "background.html#yay"; + var bgWinName = "bgNotifier"; + + function openBackgroundWindow() { + window.open(bgWinUrl, bgWinName, "background"); + } + function closeBackgroundWindow() { + var w = window.open(bgWinUrl, bgWinName, "background"); + w.close(); + } + </script> + <p> + This app displays a notification + whenever its background window is created. + Background windows and this app are described in the + <a href="http://code.google.com/chrome/apps/docs/developers_guide.html">apps documentation</a>. + </p> + <p> + The generic source code is available for + <a href="http://code.google.com/chrome/extensions/trunk/examples/apps/background-simple.zip">download</a>. + The + <a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/apps/background-simple/README?content-type=text/plain">README</a> + tells you how to modify the code. + </p> + <p> + If you just want to run a version of this app that's already on the web, + here's how: + </p> + <ol> + <li> + <a href="http://background-simple.appspot.com/app.crx">Install the app</a> + from background-simple.appspot.com. + </li> + <li> + Launch Simple Background App from the New Tab page. + </li> + </ol> + </body> +</html> diff --git a/chrome/common/extensions/docs/examples/apps/background-simple/manifest.json b/chrome/common/extensions/docs/examples/apps/background-simple/manifest.json new file mode 100644 index 0000000..db35da0 --- /dev/null +++ b/chrome/common/extensions/docs/examples/apps/background-simple/manifest.json @@ -0,0 +1,11 @@ +{
+ "name": "Simple Background App",
+ "version": "0.1",
+ "app": {
+ "urls": [ "http://SOME_SITE_WITHOUT_PORT_NUMBERS/SOME_PATH/" ],
+ "launch": {
+ "web_url": "http://SOME_SITE/SOME_PATH/index.html"
+ }
+ },
+ "permissions": ["background", "notifications"]
+}
diff --git a/chrome/common/extensions/docs/examples/extensions/benchmark.zip b/chrome/common/extensions/docs/examples/extensions/benchmark.zip Binary files differindex 3d799d2..3370dc1 100644 --- a/chrome/common/extensions/docs/examples/extensions/benchmark.zip +++ b/chrome/common/extensions/docs/examples/extensions/benchmark.zip diff --git a/chrome/common/extensions/docs/examples/extensions/calendar.zip b/chrome/common/extensions/docs/examples/extensions/calendar.zip Binary files differindex 4ce9b2f..addfe53 100644 --- a/chrome/common/extensions/docs/examples/extensions/calendar.zip +++ b/chrome/common/extensions/docs/examples/extensions/calendar.zip diff --git a/chrome/common/extensions/docs/examples/extensions/fx.zip b/chrome/common/extensions/docs/examples/extensions/fx.zip Binary files differindex 027e286..f2c66fa 100644 --- a/chrome/common/extensions/docs/examples/extensions/fx.zip +++ b/chrome/common/extensions/docs/examples/extensions/fx.zip diff --git a/chrome/common/extensions/docs/examples/extensions/imageinfo.zip b/chrome/common/extensions/docs/examples/extensions/imageinfo.zip Binary files differindex dbce95b..1629fef 100644 --- a/chrome/common/extensions/docs/examples/extensions/imageinfo.zip +++ b/chrome/common/extensions/docs/examples/extensions/imageinfo.zip diff --git a/chrome/common/extensions/docs/examples/extensions/mappy.zip b/chrome/common/extensions/docs/examples/extensions/mappy.zip Binary files differindex 79245b1..e5c9f3b 100644 --- a/chrome/common/extensions/docs/examples/extensions/mappy.zip +++ b/chrome/common/extensions/docs/examples/extensions/mappy.zip diff --git a/chrome/common/extensions/docs/examples/tutorials/getstarted.zip b/chrome/common/extensions/docs/examples/tutorials/getstarted.zip Binary files differindex 268cc5d..54083ae 100644 --- a/chrome/common/extensions/docs/examples/tutorials/getstarted.zip +++ b/chrome/common/extensions/docs/examples/tutorials/getstarted.zip diff --git a/chrome/common/extensions/docs/examples/tutorials/getstarted/getstarted.zip b/chrome/common/extensions/docs/examples/tutorials/getstarted/getstarted.zip Binary files differdeleted file mode 100644 index 37deb7f..0000000 --- a/chrome/common/extensions/docs/examples/tutorials/getstarted/getstarted.zip +++ /dev/null diff --git a/chrome/common/extensions/docs/experimental.clipboard.html b/chrome/common/extensions/docs/experimental.clipboard.html index 24287e0..c2bc246 100644 --- a/chrome/common/extensions/docs/experimental.clipboard.html +++ b/chrome/common/extensions/docs/experimental.clipboard.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -267,7 +277,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a href="#global-methods">Methods</a> <ol> <li> <a href="#method-executeCopy">executeCopy</a> @@ -279,7 +289,7 @@ </ol> </li> <li style="display: none; "> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -345,8 +355,8 @@ generally indicates the tab is going away. </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a name="global-methods"></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -421,6 +431,16 @@ generally indicates the tab is going away. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -481,6 +501,16 @@ generally indicates the tab is going away. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -603,6 +633,16 @@ generally indicates the tab is going away. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -663,6 +703,16 @@ generally indicates the tab is going away. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -785,6 +835,16 @@ generally indicates the tab is going away. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -845,6 +905,16 @@ generally indicates the tab is going away. </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -901,10 +971,9 @@ generally indicates the tab is going away. </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup" style="display: none; "> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup" style="display: none; "> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -922,14 +991,15 @@ generally indicates the tab is going away. </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/experimental.contextMenus.html b/chrome/common/extensions/docs/experimental.contextMenus.html index aa7a362..bfee164 100644 --- a/chrome/common/extensions/docs/experimental.contextMenus.html +++ b/chrome/common/extensions/docs/experimental.contextMenus.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -267,7 +277,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -275,7 +285,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -339,8 +349,8 @@ You can read all about it at its new home: </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -415,10 +425,9 @@ You can read all about it at its new home: </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -436,14 +445,15 @@ You can read all about it at its new home: </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/experimental.cookies.html b/chrome/common/extensions/docs/experimental.cookies.html index 5fdcdcc..7144325 100644 --- a/chrome/common/extensions/docs/experimental.cookies.html +++ b/chrome/common/extensions/docs/experimental.cookies.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -267,7 +277,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -275,7 +285,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -339,8 +349,8 @@ You can read all about it at its new home: </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -415,10 +425,9 @@ You can read all about it at its new home: </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -436,14 +445,15 @@ You can read all about it at its new home: </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/experimental.history.html b/chrome/common/extensions/docs/experimental.history.html index 0e45ec7..aa36096 100644 --- a/chrome/common/extensions/docs/experimental.history.html +++ b/chrome/common/extensions/docs/experimental.history.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -267,7 +277,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -275,7 +285,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -339,8 +349,8 @@ You can read all about it at its new home: </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -415,10 +425,9 @@ You can read all about it at its new home: </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -436,14 +445,15 @@ You can read all about it at its new home: </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/experimental.html b/chrome/common/extensions/docs/experimental.html index 1c9ebe1..80a6919 100644 --- a/chrome/common/extensions/docs/experimental.html +++ b/chrome/common/extensions/docs/experimental.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -267,7 +277,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -275,7 +285,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -316,6 +326,7 @@ on the following experimental APIs: <a href="experimental.processes.html">experimental.processes</a></li><li> <a href="experimental.proxy.html">experimental.proxy</a></li><li> <a href="experimental.sidebar.html">experimental.sidebar</a></li><li> + <a href="experimental.tts.html">experimental.tts</a></li><li> <a href="experimental.webNavigation.html">experimental.webNavigation</a></li><li> <a href="experimental.webRequest.html">experimental.webRequest</a></li> </ul> @@ -406,8 +417,8 @@ For information on the standard APIs that extensions can use, see </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -482,10 +493,9 @@ For information on the standard APIs that extensions can use, see </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -503,14 +513,15 @@ For information on the standard APIs that extensions can use, see </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/experimental.idle.html b/chrome/common/extensions/docs/experimental.idle.html index 6d1ae19..549094c 100644 --- a/chrome/common/extensions/docs/experimental.idle.html +++ b/chrome/common/extensions/docs/experimental.idle.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -267,7 +277,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -275,7 +285,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -339,8 +349,8 @@ You can read all about it at its new home: </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -415,10 +425,9 @@ You can read all about it at its new home: </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -436,14 +445,15 @@ You can read all about it at its new home: </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/experimental.infobars.html b/chrome/common/extensions/docs/experimental.infobars.html index f542b7a..be9ecd2 100644 --- a/chrome/common/extensions/docs/experimental.infobars.html +++ b/chrome/common/extensions/docs/experimental.infobars.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -267,7 +277,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a href="#global-methods">Methods</a> <ol> <li> <a href="#method-show">show</a> @@ -275,7 +285,7 @@ </ol> </li> <li style="display: none; "> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -375,8 +385,8 @@ For example: </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a name="global-methods"></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -496,6 +506,16 @@ For example: </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -554,6 +574,16 @@ For example: </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -564,6 +594,16 @@ For example: </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -624,6 +664,16 @@ For example: </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -710,6 +760,16 @@ For example: </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -735,10 +795,9 @@ For example: </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup" style="display: none; "> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup" style="display: none; "> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -756,14 +815,15 @@ For example: </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/experimental.processes.html b/chrome/common/extensions/docs/experimental.processes.html index f2a289e..6fa41b0 100644 --- a/chrome/common/extensions/docs/experimental.processes.html +++ b/chrome/common/extensions/docs/experimental.processes.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -267,7 +277,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a href="#global-methods">Methods</a> <ol> <li> <a href="#method-getProcessIdForTab">getProcessIdForTab</a> @@ -275,7 +285,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a href="#global-events">Events</a> <ol> <li> <a href="#event-onUpdated">onUpdated</a> @@ -340,8 +350,8 @@ http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_ </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a name="global-methods"></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -416,6 +426,16 @@ http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -476,6 +496,16 @@ http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -562,6 +592,16 @@ http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -587,10 +627,9 @@ http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_ </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a name="global-events"></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a name="event-onUpdated"></a> @@ -606,10 +645,11 @@ http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_ <p>Fires each time the Task Manager updates its process statistics, providing the dictionary of updated Process objects, indexed by process ID.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>processes</var> <em> @@ -662,15 +702,25 @@ http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> @@ -783,6 +833,16 @@ http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -841,6 +901,16 @@ http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -899,6 +969,16 @@ http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -957,6 +1037,16 @@ http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1015,6 +1105,16 @@ http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1073,6 +1173,16 @@ http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1083,6 +1193,16 @@ http://src.chromium.org/viewvc/chrome/trunk/src/chrome/test/data/extensions/api_ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> diff --git a/chrome/common/extensions/docs/experimental.proxy.html b/chrome/common/extensions/docs/experimental.proxy.html index 07ba013..1b1a16c 100644 --- a/chrome/common/extensions/docs/experimental.proxy.html +++ b/chrome/common/extensions/docs/experimental.proxy.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -267,15 +277,19 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a href="#global-methods">Methods</a> <ol> <li> + <a href="#method-getCurrentProxySettings">getCurrentProxySettings</a> + </li><li> + <a href="#method-removeCustomProxySettings">removeCustomProxySettings</a> + </li><li> <a href="#method-useCustomProxySettings">useCustomProxySettings</a> </li> </ol> </li> <li style="display: none; "> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -334,19 +348,414 @@ </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a name="global-methods"></a> <h3>Methods</h3> <!-- iterates over all functions --> <div class="apiItem"> + <a name="method-getCurrentProxySettings"></a> <!-- method-anchor --> + <h4>getCurrentProxySettings</h4> + + <div class="summary"><span style="display: none; ">void</span> + <!-- Note: intentionally longer 80 columns --> + <span>chrome.experimental.proxy.getCurrentProxySettings</span>(<span class="null"><span style="display: none; ">, </span><span>boolean</span> + <var><span>incognito</span></var></span><span class="null"><span>, </span><span>function</span> + <var><span>callback</span></var></span>)</div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p>Returns the currently effective proxy settings. These can originate from default values, command line options, the extension settings API, policies and possibly other sources in the future.</p> + + <!-- PARAMETERS --> + <h4>Parameters</h4> + <dl> + <div> + <div> + <dt> + <var>incognito</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>boolean</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>See incognito parameter of useCustomProxySettings.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>callback</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>function</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo"> + Undocumented. + </dd> + <dd style="display: none; "> + Description of this parameter from the json schema. + </dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- RETURNS --> + <h4 style="display: none; ">Returns</h4> + <dl> + <div style="display: none; "> + <div> + </div> + </div> + </dl> + + <!-- CALLBACK --> + <div> + <div> + <h4>Callback function</h4> + <p> + The callback <em>parameter</em> should specify a function + that looks like this: + </p> + <p style="display: none; "> + If you specify the <em>callback</em> parameter, it should + specify a function that looks like this: + </p> + + <!-- Note: intentionally longer 80 columns --> + <pre>function(<span>ProxyConfig config</span>) <span class="subdued">{...}</span>;</pre> + <dl> + <div> + <div> + <dt> + <var>config</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span> + <a href="experimental.proxy.html#type-ProxyConfig">ProxyConfig</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>Configuration, not necessarily a literal copy of the configuration passed to useCustomProxySettings.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + </div> + </div> + + <!-- MIN_VERSION --> + <p style="display: none; "> + This function was added in version <b><span></span></b>. + If you require this function, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </p> + </div> <!-- /description --> + + </div><div class="apiItem"> + <a name="method-removeCustomProxySettings"></a> <!-- method-anchor --> + <h4>removeCustomProxySettings</h4> + + <div class="summary"><span style="display: none; ">void</span> + <!-- Note: intentionally longer 80 columns --> + <span>chrome.experimental.proxy.removeCustomProxySettings</span>(<span class="optional"><span style="display: none; ">, </span><span>boolean</span> + <var><span>incognito</span></var></span>)</div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p>Remove a custom proxy set by the current extension. This is the inverse of useCustomProxySettings.</p> + + <!-- PARAMETERS --> + <h4>Parameters</h4> + <dl> + <div> + <div> + <dt> + <var>incognito</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>boolean</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>See incognito parameter of useCustomProxySettings.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- RETURNS --> + <h4 style="display: none; ">Returns</h4> + <dl> + <div style="display: none; "> + <div> + </div> + </div> + </dl> + + <!-- CALLBACK --> + <div style="display: none; "> + <div> + <h4>Callback function</h4> + <p> + The callback <em>parameter</em> should specify a function + that looks like this: + </p> + <p> + If you specify the <em>callback</em> parameter, it should + specify a function that looks like this: + </p> + + <!-- Note: intentionally longer 80 columns --> + <pre>function(<span>Type param1, Type param2</span>) <span class="subdued">{...}</span>;</pre> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + </div> + + <!-- MIN_VERSION --> + <p style="display: none; "> + This function was added in version <b><span></span></b>. + If you require this function, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </p> + </div> <!-- /description --> + + </div><div class="apiItem"> <a name="method-useCustomProxySettings"></a> <!-- method-anchor --> <h4>useCustomProxySettings</h4> <div class="summary"><span style="display: none; ">void</span> <!-- Note: intentionally longer 80 columns --> <span>chrome.experimental.proxy.useCustomProxySettings</span>(<span class="null"><span style="display: none; ">, </span><span>ProxyConfig</span> - <var><span>config</span></var></span>)</div> + <var><span>config</span></var></span><span class="optional"><span>, </span><span>boolean</span> + <var><span>incognito</span></var></span>)</div> <div class="description"> <p class="todo" style="display: none; ">Undocumented.</p> @@ -409,6 +818,84 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>incognito</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>boolean</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>If true, the proxy settings apply only to incognito windows. Otherwise they apply to regular windows (and incognito windows if no specific settings are provided for incognito windows)</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -465,10 +952,9 @@ </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup" style="display: none; "> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup" style="display: none; "> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -486,14 +972,15 @@ </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> @@ -574,7 +1061,7 @@ array of <span><span></span></span> </span> <span>string</span> - <span>["http", "socks", "socks4", "socks5"]</span> + <span>["http", "https", "socks", "socks4", "socks5"]</span> </span> </span> ) @@ -606,6 +1093,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -664,6 +1161,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -722,6 +1229,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -732,6 +1249,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -773,7 +1300,7 @@ <dd class="todo" style="display: none; "> Undocumented. </dd> - <dd>An object encapsulating the set of proxy rules for all protocols.</dd> + <dd>An object encapsulating the set of proxy rules for all protocols. Use either 'singleProxy' or (a subset of) 'proxyForHttp', 'proxyForHttps', 'proxyForFtp' and 'socksProxy'.</dd> <dd style="display: none; "> This parameter was added in version <b><span></span></b>. @@ -839,6 +1366,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -897,6 +1434,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -955,6 +1502,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1013,6 +1570,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1071,6 +1638,95 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>bypassList</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span> + array of <span><span> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span></span> + </span> + <span style="display: none; ">paramType</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>List of servers to connect to without a proxy server.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1081,6 +1737,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1188,6 +1854,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1198,6 +1874,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1284,7 +1970,7 @@ <dd class="todo" style="display: none; "> Undocumented. </dd> - <dd>The proxy rules describing this configuration.</dd> + <dd>The proxy rules describing this configuration. Use this for 'fixed_servers' mode.</dd> <dd style="display: none; "> This parameter was added in version <b><span></span></b>. @@ -1305,6 +1991,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1342,7 +2038,7 @@ <dd class="todo" style="display: none; "> Undocumented. </dd> - <dd>The proxy auto-config (PAC) script for this configuration.</dd> + <dd>The proxy auto-config (PAC) script for this configuration. Use this for 'pac_script' mode.</dd> <dd style="display: none; "> This parameter was added in version <b><span></span></b>. @@ -1363,6 +2059,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1421,6 +2127,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1431,6 +2147,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> diff --git a/chrome/common/extensions/docs/experimental.sidebar.html b/chrome/common/extensions/docs/experimental.sidebar.html index 148de03..aa6f2ee 100644 --- a/chrome/common/extensions/docs/experimental.sidebar.html +++ b/chrome/common/extensions/docs/experimental.sidebar.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -267,7 +277,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a href="#global-methods">Methods</a> <ol> <li> <a href="#method-collapse">collapse</a> @@ -291,7 +301,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a href="#global-events">Events</a> <ol> <li> <a href="#event-onStateChanged">onStateChanged</a> @@ -344,8 +354,8 @@ </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a name="global-methods"></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -464,6 +474,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -474,6 +494,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -640,6 +670,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -650,6 +690,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -817,6 +867,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -827,6 +887,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -887,6 +957,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -973,6 +1053,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1108,6 +1198,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1118,6 +1218,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1180,7 +1290,7 @@ <div class="description"> <p class="todo" style="display: none; ">Undocumented.</p> - <p>Navigates sidebar for the specified tab to the specified URL.</p> + <p>Loads the the specified html file into the sidebar for the specified tab.</p> <!-- PARAMETERS --> <h4>Parameters</h4> @@ -1284,6 +1394,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1293,7 +1413,7 @@ </div><div> <div> <dt> - <var>url</var> + <var>path</var> <em> <!-- TYPE --> @@ -1318,12 +1438,10 @@ </em> </dt> - <dd class="todo"> + <dd class="todo" style="display: none; "> Undocumented. </dd> - <dd style="display: none; "> - Description of this parameter from the json schema. - </dd> + <dd>Relative path to the html file in the extension to show in the sidebar.</dd> <dd style="display: none; "> This parameter was added in version <b><span></span></b>. @@ -1344,6 +1462,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1354,6 +1482,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1520,6 +1658,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1578,6 +1726,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1588,6 +1746,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1754,6 +1922,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1812,6 +1990,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1870,6 +2058,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1880,6 +2078,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2046,6 +2254,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2104,6 +2322,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2114,6 +2342,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2280,6 +2518,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2290,6 +2538,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2346,10 +2604,9 @@ </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a name="global-events"></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a name="event-onStateChanged"></a> @@ -2365,10 +2622,11 @@ <p>Notifies about sidebar state changes.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>details</var> <em> @@ -2468,6 +2726,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2528,6 +2796,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2538,15 +2816,25 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/experimental.tts.html b/chrome/common/extensions/docs/experimental.tts.html new file mode 100644 index 0000000..413fc3d --- /dev/null +++ b/chrome/common/extensions/docs/experimental.tts.html @@ -0,0 +1,2313 @@ +<!DOCTYPE html><!-- This page is a placeholder for generated extensions api doc. Note: + 1) The <head> information in this page is significant, should be uniform + across api docs and should be edited only with knowledge of the + templating mechanism. + 3) All <body>.innerHTML is genereated as an rendering step. If viewed in a + browser, it will be re-generated from the template, json schema and + authored overview content. + 4) The <body>.innerHTML is also generated by an offline step so that this + page may easily be indexed by search engines. +--><html xmlns="http://www.w3.org/1999/xhtml"><head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <link href="css/ApiRefStyles.css" rel="stylesheet" type="text/css"> + <link href="css/print.css" rel="stylesheet" type="text/css" media="print"> + <script type="text/javascript" src="../../../third_party/jstemplate/jstemplate_compiled.js"> + </script> + <script type="text/javascript" src="js/api_page_generator.js"></script> + <script type="text/javascript" src="js/bootstrap.js"></script> + <script type="text/javascript" src="js/sidebar.js"></script> + <title>chrome.experimental.tts - Google Chrome Extensions - Google Code</title></head> + <body> <div id="gc-container" class="labs"> + <div id="devModeWarning"> + You are viewing extension docs in chrome via the 'file:' scheme: are you expecting to see local changes when you refresh? You'll need run chrome with --allow-file-access-from-files. + </div> + <!-- SUBTEMPLATES: DO NOT MOVE FROM THIS LOCATION --> + <!-- In particular, sub-templates that recurse, must be used by allowing + jstemplate to make a copy of the template in this section which + are not operated on by way of the jsskip="true" --> + <div style="display:none"> + + <!-- VALUE --> + <div id="valueTemplate"> + <dt> + <var>paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum">enumerated</span> + <span id="typeTemplate"> + <span> + <a> Type</a> + </span> + <span> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo"> + Undocumented. + </dd> + <dd> + Description of this parameter from the json schema. + </dd> + <dd> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd> + <div></div> + </dd> + + </div> <!-- /VALUE --> + + <div id="functionParametersTemplate"> + <h5>Parameters</h5> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + </div> <!-- /SUBTEMPLATES --> + + <a id="top"></a> + <div id="skipto"> + <a href="#gc-pagecontent">Skip to page content</a> + <a href="#gc-toc">Skip to main navigation</a> + </div> + <!-- API HEADER --> + <table id="header" width="100%" cellspacing="0" border="0"> + <tbody><tr> + <td valign="middle"><a href="http://code.google.com/"><img src="images/code_labs_logo.gif" height="43" width="161" alt="Google Code Labs" style="border:0; margin:0;"></a></td> + <td valign="middle" width="100%" style="padding-left:0.6em;"> + <form action="http://www.google.com/cse" id="cse" style="margin-top:0.5em"> + <div id="gsc-search-box"> + <input type="hidden" name="cx" value="002967670403910741006:61_cvzfqtno"> + <input type="hidden" name="ie" value="UTF-8"> + <input type="text" name="q" value="" size="55"> + <input class="gsc-search-button" type="submit" name="sa" value="Search"> + <br> + <span class="greytext">e.g. "page action" or "tabs"</span> + </div> + </form> + + <script type="text/javascript" src="http://www.google.com/jsapi"></script> + <script type="text/javascript">google.load("elements", "1", {packages: "transliteration"});</script> + <script type="text/javascript" src="http://www.google.com/coop/cse/t13n?form=cse&t13n_langs=en"></script> + <script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=cse&lang=en"></script> + </td> + </tr> + </tbody></table> + + <div id="codesiteContent" class=""> + + <a id="gc-topnav-anchor"></a> + <div id="gc-topnav"> + <h1>Google Chrome Extensions (<a href="http://code.google.com/labs/">Labs</a>)</h1> + <ul id="home" class="gc-topnav-tabs"> + <li id="home_link"> + <a href="index.html" title="Google Chrome Extensions home page">Home</a> + </li> + <li id="docs_link"> + <a href="docs.html" title="Official Google Chrome Extensions documentation">Docs</a> + </li> + <li id="faq_link"> + <a href="faq.html" title="Answers to frequently asked questions about Google Chrome Extensions">FAQ</a> + </li> + <li id="samples_link"> + <a href="samples.html" title="Sample extensions (with source code)">Samples</a> + </li> + <li id="group_link"> + <a href="http://groups.google.com/a/chromium.org/group/chromium-extensions" title="Google Chrome Extensions developer forum">Group</a> + </li> + </ul> + </div> <!-- end gc-topnav --> + + <div class="g-section g-tpl-170"> + <!-- SIDENAV --> + <div class="g-unit g-first" id="gc-toc"> + <ul> + <li><a href="getstarted.html">Getting Started</a></li> + <li><a href="overview.html">Overview</a></li> + <li><a href="whats_new.html">What's New?</a></li> + <li><h2><a href="devguide.html">Developer's Guide</a></h2> + <ul> + <li>Browser UI + <ul> + <li><a href="browserAction.html">Browser Actions</a></li> + <li><a href="contextMenus.html">Context Menus</a></li> + <li><a href="notifications.html">Desktop Notifications</a></li> + <li><a href="omnibox.html">Omnibox</a></li> + <li><a href="options.html">Options Pages</a></li> + <li><a href="override.html">Override Pages</a></li> + <li><a href="pageAction.html">Page Actions</a></li> + </ul> + </li> + <li>Browser Interaction + <ul> + <li><a href="bookmarks.html">Bookmarks</a></li> + <li><a href="cookies.html">Cookies</a></li> + <li><a href="events.html">Events</a></li> + <li><a href="history.html">History</a></li> + <li><a href="management.html">Management</a></li> + <li><a href="tabs.html">Tabs</a></li> + <li><a href="windows.html">Windows</a></li> + </ul> + </li> + <li>Implementation + <ul> + <li><a href="a11y.html">Accessibility</a></li> + <li><a href="background_pages.html">Background Pages</a></li> + <li><a href="content_scripts.html">Content Scripts</a></li> + <li><a href="xhr.html">Cross-Origin XHR</a></li> + <li><a href="idle.html">Idle</a></li> + <li><a href="i18n.html">Internationalization</a></li> + <li><a href="messaging.html">Message Passing</a></li> + <li><a href="npapi.html">NPAPI Plugins</a></li> + </ul> + </li> + <li>Finishing + <ul> + <li><a href="hosting.html">Hosting</a></li> + <li><a href="external_extensions.html">Other Deployment Options</a></li> + </ul> + </li> + </ul> + </li> + <li><h2><a href="apps.html">Packaged Apps</a></h2></li> + <li><h2><a href="tutorials.html">Tutorials</a></h2> + <ul> + <li><a href="tut_debugging.html">Debugging</a></li> + <li><a href="tut_analytics.html">Google Analytics</a></li> + <li><a href="tut_oauth.html">OAuth</a></li> + </ul> + </li> + <li><h2>Reference</h2> + <ul> + <li>Formats + <ul> + <li><a href="manifest.html">Manifest Files</a></li> + <li><a href="match_patterns.html">Match Patterns</a></li> + </ul> + </li> + <li><a href="permission_warnings.html">Permission Warnings</a></li> + <li><a href="api_index.html">chrome.* APIs</a></li> + <li><a href="api_other.html">Other APIs</a></li> + </ul> + </li> + <li><h2><a href="samples.html">Samples</a></h2></li> + <div class="line"> </div> + <li><h2>More</h2> + <ul> + <li><a href="http://code.google.com/chrome/webstore/docs/index.html">Chrome Web Store</a></li> + <li><a href="http://code.google.com/chrome/apps/docs/developers_guide.html">Hosted Apps</a></li> + <li><a href="themes.html">Themes</a></li> + </ul> + </li> + </ul> + </div> + <script> + initToggles(); + </script> + + <div class="g-unit" id="gc-pagecontent"> + <div id="pageTitle"> + <h1 class="page_title">chrome.experimental.tts</h1> + </div> + <!-- TABLE OF CONTENTS --> + <div id="toc"> + <h2>Contents</h2> + <ol> + <li> + <a href="#overview">Overview</a> + <ol> + <li style="display: none; "> + <a>h3Name</a> + </li> + </ol> + </li><li> + <a href="#generating_speech">Generating speech</a> + <ol> + <li style="display: none; "> + <a>h3Name</a> + </li> + </ol> + </li><li> + <a href="#ssml">SSML markup</a> + <ol> + <li style="display: none; "> + <a>h3Name</a> + </li> + </ol> + </li><li> + <a href="#provider">Implementing a speech provider</a> + <ol> + <li style="display: none; "> + <a>h3Name</a> + </li> + </ol> + </li> + <li> + <a href="#apiReference">API reference: chrome.experimental.tts</a> + <ol> + <li style="display: none; "> + <a href="#properties">Properties</a> + <ol> + <li> + <a href="#property-anchor">propertyName</a> + </li> + </ol> + </li> + <li> + <a href="#global-methods">Methods</a> + <ol> + <li> + <a href="#method-isSpeaking">isSpeaking</a> + </li><li> + <a href="#method-speak">speak</a> + </li><li style="display: none; "> + <a href="#method-anchor">methodName</a> + </li><li> + <a href="#method-stop">stop</a> + </li> + </ol> + </li> + <li> + <a href="#global-events">Events</a> + <ol> + <li> + <a href="#event-onSpeak">onSpeak</a> + </li><li> + <a href="#event-onStop">onStop</a> + </li> + </ol> + </li> + <li style="display: none; "> + <a href="#types">Types</a> + <ol> + <li> + <a href="#id-anchor">id</a> + </li> + </ol> + </li> + </ol> + </li> + </ol> + </div> + <!-- /TABLE OF CONTENTS --> + + <!-- Standard content lead-in for experimental API pages --> + <p id="classSummary"> + For information on how to use experimental APIs, see the <a href="experimental.html">chrome.experimental.* APIs</a> page. + </p> + + <!-- STATIC CONTENT PLACEHOLDER --> + <div id="static"><p id="classSummary"> +Use the <code>chrome.experimental.tts</code> module to play synthesized +text-to-speech (TTS) from your extension or packaged app, or to register +as a speech provider for other extensions and packaged apps that want to speak. +</p> + +<p class="note"><b>Give us feedback:</b> If you have suggestions, +especially changes that should be made before stabilizing the first +version of this API, please send your ideas to the +<a href="http://groups.google.com/a/chromium.org/group/chromium-extensions">chromium-extensions</a> +group.</p> + +<h2 id="overview">Overview</h2> + +<p>To enable this experimental API, visit +<b>chrome://flags</b> and enable <b>Experimental Extension APIs</b>. + +</p><p>Chrome provides native support for speech on Windows (using SAPI +5), Mac OS X, and Chrome OS, using speech synthesis capabilities +provided by the operating system. On all platforms, the user can +install extensions that register themselves as alternative speech +synthesis providers.</p> + +<h2 id="generating_speech">Generating speech</h2> + +<p>Call <code>speak()</code> from your extension or +packaged app to speak. For example:</p> + +<pre>chrome.experimental.tts.speak('Hello, world.');</pre> + +<p>You can provide options that control various properties of the speech, +such as its rate, pitch, and more. For example:</p> + +<pre>chrome.experimental.tts.speak('Hello, world.', {'rate': 0.8});</pre> + +<p>It's also a good idea to specify the locale so that a synthesizer +supporting that language (and regional dialect, if applicable) is chosen.</p> + +<pre>chrome.experimental.tts.speak( + 'Hello, world.', + { + 'locale': 'en-US', + 'rate': 0.8 + });</pre> + +<p>Not all speech engines will support all options.</p> + +<p>You can also pass a callback function that will be called when the +speech has finished. For example, suppose we have an image on our page +displaying a picture of a face with a closed mouth. We could open the mouth +while speaking, and close it when done.</p> + +<pre>faceImage.src = 'open_mouth.png'; +chrome.experimental.tts.speak( + 'Hello, world.', null, function() { + faceImage.src = 'closed_mouth.png'; + }); +</pre> + +<p>To stop speaking immediately, just call <code>stop()</code>. Call +<code>isSpeaking()</code> to find out if a TTS engine is currently speaking.</p> + +<p>You can check to see if an error occurred by checking +<code>chrome.extension.lastError</code> inside the callback function.</p> + +<h2 id="ssml">SSML markup</h2> + +<p>Utterances used in this API may include markup using the +<a href="http://www.w3.org/TR/speech-synthesis">Speech Synthesis Markup +Language (SSML)</a>. For example: + +</p><pre>chrome.experimental.tts.speak('The <emphasis>second</emphasis> word of this sentence was emphasized.');</pre> + +<p>Not all speech engines will support all SSML tags, and some may not support +SSML at all, but all engines are expected to ignore any SSML they don't +support and still speak the underlying text.</p> + +<h2 id="provider">Implementing a speech provider</h2> + +<p>An extension can register itself as a speech provider. By doing so, it +can intercept some or all calls to functions such as +<code>speak()</code> and <code>stop()</code> and provide an alternate +implementation. Extensions are free to use any available web technology +to provide speech, including streaming audio from a server, HTML5 audio, +Native Client, or Flash. An extension could even do something different +with the utterances, like display closed captions in a pop-up window or +send them as log messages to a remote server.</p> + +<p>To provide TTS, an extension must first declare all voices it provides +in the extension manifest, like this:</p> + +<pre>{ + "name": "My TTS Provider", + "version": "1.0", + <b>"permissions": ["experimental"] + "tts": { + "voices": [ + { + "voiceName": "Alice", + "locale": "en-US", + "gender": "female" + }, + { + "voiceName": "Pat", + "locale": "en-US" + } + ] + },</b> + "background_page": "background.html", +}</pre> + +<p>An extension can specify any number of voices. The three +parameters—<code>voiceName</code>, <code>locale</code>, +and <code>gender</code>—are all optional. If they are all unspecified, +the extension will handle all speech from all clients. If any of them +are specified, they can be used to filter speech requests. For +example, if a voice only supports French, it should set the locale to +'fr' (or something more specific like 'fr-FR') so that only utterances +in that locale are routed to that extension.</p> + +<p>To handle speech calls, the extension should register listeners +for <code>onSpeak</code> and <code>onStop</code>, like this:</p> + +<pre>var speakListener = function(utterance, options, callback) { + ... + callback(); +}; +var stopListener = function() { + ... +}; +chrome.experimental.tts.onSpeak.addListener(speakListener); +chrome.experimental.tts.onStop.addListener(stopListener);</pre> + +<p class="warning"><b>Important:</b> Don't forget to call the callback +function from your speak listener!</p> + +<p>If an extension does not register listeners for both +<code>onSpeak</code> and <code>onStop</code>, it will not intercept any +speech calls, regardless of what is in the manifest. + +</p><p>The decision of whether or not to send a given speech request to an +extension is based solely on whether the extension supports the given voice +parameters in its manifest and has registered listeners +for <code>onSpeak</code> and <code>onStop</code>. In other words, +there's no way for an extension to receive a speech request and +dynamically decide whether to handle it or not.</p> +</div> + + <!-- API PAGE --> + <div class="apiPage"> + <a name="apiReference"></a> + <h2>API reference: chrome.experimental.tts</h2> + + <!-- PROPERTIES --> + <div class="apiGroup" style="display: none; "> + <a name="properties"></a> + <h3 id="properties">Properties</h3> + + <div> + <a></a> + <h4>getLastError</h4> + <div class="summary"> + <!-- Note: intentionally longer 80 columns --> + <span>chrome.extension</span><span>lastError</span> + </div> + <div> + </div> + </div> + + </div> <!-- /apiGroup --> + + <!-- METHODS --> + <div id="methodsTemplate" class="apiGroup"> + <a name="global-methods"></a> + <h3>Methods</h3> + + <!-- iterates over all functions --> + <div class="apiItem"> + <a name="method-isSpeaking"></a> <!-- method-anchor --> + <h4>isSpeaking</h4> + + <div class="summary"><span style="display: none; ">void</span> + <!-- Note: intentionally longer 80 columns --> + <span>chrome.experimental.tts.isSpeaking</span>(<span class="optional"><span style="display: none; ">, </span><span>function</span> + <var><span>callback</span></var></span>)</div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p>Check if the engine is currently speaking.</p> + + <!-- PARAMETERS --> + <h4>Parameters</h4> + <dl> + <div> + <div> + <dt> + <var>callback</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>function</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo"> + Undocumented. + </dd> + <dd style="display: none; "> + Description of this parameter from the json schema. + </dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- RETURNS --> + <h4 style="display: none; ">Returns</h4> + <dl> + <div style="display: none; "> + <div> + </div> + </div> + </dl> + + <!-- CALLBACK --> + <div> + <div> + <h4>Callback function</h4> + <p style="display: none; "> + The callback <em>parameter</em> should specify a function + that looks like this: + </p> + <p> + If you specify the <em>callback</em> parameter, it should + specify a function that looks like this: + </p> + + <!-- Note: intentionally longer 80 columns --> + <pre>function(<span>boolean speaking</span>) <span class="subdued">{...}</span>;</pre> + <dl> + <div> + <div> + <dt> + <var>speaking</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>boolean</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>True if speaking, false otherwise.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + </div> + </div> + + <!-- MIN_VERSION --> + <p style="display: none; "> + This function was added in version <b><span></span></b>. + If you require this function, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </p> + </div> <!-- /description --> + + </div><div class="apiItem"> + <a name="method-speak"></a> <!-- method-anchor --> + <h4>speak</h4> + + <div class="summary"><span style="display: none; ">void</span> + <!-- Note: intentionally longer 80 columns --> + <span>chrome.experimental.tts.speak</span>(<span class="null"><span style="display: none; ">, </span><span>string</span> + <var><span>utterance</span></var></span><span class="optional"><span>, </span><span>object</span> + <var><span>options</span></var></span><span class="optional"><span>, </span><span>function</span> + <var><span>callback</span></var></span>)</div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p>Speak text using a text-to-speech engine.</p> + + <!-- PARAMETERS --> + <h4>Parameters</h4> + <dl> + <div> + <div> + <dt> + <var>utterance</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>The text to speak. May include SSML markup.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>options</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>object</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>The speech options.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd> + <dl> + <div> + <div> + <dt> + <var>enqueue</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>boolean</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>If true, enqueues this utterance if TTS is already in progress. If false (the default), interrupts any current speech and flushes the speech queue before speaking this new utterance.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>voiceName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>The name of the voice to use for synthesis. If empty, uses any available voice.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>locale</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>The language and optional region code that specify the language and dialect to be used for synthesis, in the form <language>-<region>. Examples: 'en', 'en-US', 'en-GB', 'zh-CN', etc.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>gender</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span>["male", "female"]</span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>Gender of voice for synthesized speech.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>rate</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>number</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>Speaking speed between 0 and 1 inclusive, with 0 being slowest and 1 being fastest, with a default of 0.5.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>pitch</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>number</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>Speaking pitch between 0 and 1 inclusive, with 0 being lowest and 1 being highest, with a default of 0.5.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>volume</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>number</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>Speaking volume between 0 and 1 inclusive, with 0 being lowest and 1 being highest, with a default of 1.0.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>callback</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>function</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>This function is called when speaking is finished.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- RETURNS --> + <h4 style="display: none; ">Returns</h4> + <dl> + <div style="display: none; "> + <div> + </div> + </div> + </dl> + + <!-- CALLBACK --> + <div> + <div> + <h4>Callback function</h4> + <p style="display: none; "> + The callback <em>parameter</em> should specify a function + that looks like this: + </p> + <p> + If you specify the <em>callback</em> parameter, it should + specify a function that looks like this: + </p> + + <!-- Note: intentionally longer 80 columns --> + <pre>function(<span></span>) <span class="subdued">{...}</span>;</pre> + <dl> + <div style="display: none; "> + <div> + </div> + </div> + </dl> + </div> + </div> + + <!-- MIN_VERSION --> + <p style="display: none; "> + This function was added in version <b><span></span></b>. + If you require this function, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </p> + </div> <!-- /description --> + + </div><div class="apiItem" style="display: none; "> + <a></a> <!-- method-anchor --> + <h4>method name</h4> + + <div class="summary"><span>void</span> + <!-- Note: intentionally longer 80 columns --> + <span>chrome.module.methodName</span>(<span><span>, </span><span></span> + <var><span></span></var></span>)</div> + + <div class="description"> + <p class="todo">Undocumented.</p> + <p> + A description from the json schema def of the function goes here. + </p> + + <!-- PARAMETERS --> + <h4>Parameters</h4> + <dl> + <div> + <div> + </div> + </div> + </dl> + + <!-- RETURNS --> + <h4>Returns</h4> + <dl> + <div> + <div> + </div> + </div> + </dl> + + <!-- CALLBACK --> + <div> + <div> + <h4>Callback function</h4> + <p> + The callback <em>parameter</em> should specify a function + that looks like this: + </p> + <p> + If you specify the <em>callback</em> parameter, it should + specify a function that looks like this: + </p> + + <!-- Note: intentionally longer 80 columns --> + <pre>function(<span>Type param1, Type param2</span>) <span class="subdued">{...}</span>;</pre> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + </div> + + <!-- MIN_VERSION --> + <p> + This function was added in version <b><span></span></b>. + If you require this function, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </p> + </div> <!-- /description --> + + </div><div class="apiItem"> + <a name="method-stop"></a> <!-- method-anchor --> + <h4>stop</h4> + + <div class="summary"><span style="display: none; ">void</span> + <!-- Note: intentionally longer 80 columns --> + <span>chrome.experimental.tts.stop</span>(<span style="display: none; "><span>, </span><span></span> + <var><span></span></var></span>)</div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p>Stop any current speech.</p> + + <!-- PARAMETERS --> + <h4 style="display: none; ">Parameters</h4> + <dl> + <div style="display: none; "> + <div> + </div> + </div> + </dl> + + <!-- RETURNS --> + <h4 style="display: none; ">Returns</h4> + <dl> + <div style="display: none; "> + <div> + </div> + </div> + </dl> + + <!-- CALLBACK --> + <div style="display: none; "> + <div> + <h4>Callback function</h4> + <p> + The callback <em>parameter</em> should specify a function + that looks like this: + </p> + <p> + If you specify the <em>callback</em> parameter, it should + specify a function that looks like this: + </p> + + <!-- Note: intentionally longer 80 columns --> + <pre>function(<span>Type param1, Type param2</span>) <span class="subdued">{...}</span>;</pre> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + </div> + + <!-- MIN_VERSION --> + <p style="display: none; "> + This function was added in version <b><span></span></b>. + If you require this function, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </p> + </div> <!-- /description --> + + </div> <!-- /apiItem --> + + </div> <!-- /apiGroup --> + + <!-- EVENTS --> + <div id="eventsTemplate" class="apiGroup"> + <a name="global-events"></a> + <h3>Events</h3> + <!-- iterates over all events --> + <div class="apiItem"> + <a name="event-onSpeak"></a> + <h4>onSpeak</h4> + + <div class="summary"> + <!-- Note: intentionally longer 80 columns --> + <span class="subdued">chrome.experimental.tts.</span><span>onSpeak</span><span class="subdued">.addListener</span>(function(<span>string utterance, object options, function callback</span>) <span class="subdued">{...}</span>); + </div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p>Called when the user makes a call to tts.speak and the options matches one of the tts_voices from this extension's manifest.</p> + + <!-- PARAMETERS --> + <div> + <h4>Parameters</h4> + <dl> + <div> + <div> + <dt> + <var>utterance</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>The text to speak. This may include SSML, so if your engine does not support SSML, you should strip out all XML markup and synthesize only the underlying text content.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>options</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>object</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>The speak options.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd> + <dl> + <div> + <div> + <dt> + <var>voiceName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>The name of the voice to use for synthesis.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>locale</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>The language and region code that specify the language and dialect to be used for synthesis, in the form <language>-<region>, e.g. en-US, en-GB, fr-CA, zh-CN, etc.</region></language></dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>gender</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span>["male", "female"]</span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>Gender of voice for synthesized speech.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>rate</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>number</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>Speaking speed between 0 and 1 inclusive, with 0 being slowest and 1 being fastest.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>pitch</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>number</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>Speaking pitch between 0 and 1 inclusive, with 0 being lowest and 1 being highest.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>volume</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>number</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>Speaking volume between 0 and 1 inclusive, with 0 being lowest and 1 being highest.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>callback</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>function</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>You must call this function when speaking is finished.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + </div> + </div> <!-- /decription --> + + </div><div class="apiItem"> + <a name="event-onStop"></a> + <h4>onStop</h4> + + <div class="summary"> + <!-- Note: intentionally longer 80 columns --> + <span class="subdued">chrome.experimental.tts.</span><span>onStop</span><span class="subdued">.addListener</span>(function(<span></span>) <span class="subdued">{...}</span>); + </div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p>Fired when a call is made to tts.stop and this extension may be in the middle of speaking. If an extension receives a call to onStop and speech is already stopped, it should do nothing (not raise an error).</p> + + <!-- PARAMETERS --> + <div style="display: none; "> + <h4>Parameters</h4> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + </div> <!-- /decription --> + + </div> <!-- /apiItem --> + + </div> <!-- /apiGroup --> + + <!-- TYPES --> + <div class="apiGroup" style="display: none; "> + <a name="types"></a> + <h3 id="types">Types</h3> + + <!-- iterates over all types --> + <div class="apiItem"> + <a></a> + <h4>type name</h4> + + <div> + </div> + + </div> <!-- /apiItem --> + + </div> <!-- /apiGroup --> + + </div> <!-- /apiPage --> + </div> <!-- /gc-pagecontent --> + </div> <!-- /g-section --> + </div> <!-- /codesiteContent --> + <div id="gc-footer" --=""> + <div class="text"> + <p> + Except as otherwise <a href="http://code.google.com/policies.html#restrictions">noted</a>, + the content of this page is licensed under the <a rel="license" href="http://creativecommons.org/licenses/by/3.0/">Creative Commons + Attribution 3.0 License</a>, and code samples are licensed under the + <a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>. + </p> + <p> + ©2011 Google + </p> + +<!-- begin analytics --> +<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script> +<script src="http://www.google-analytics.com/ga.js" type="text/javascript"></script> + +<script type="text/javascript"> + // chrome doc tracking + try { + var engdocs = _gat._getTracker("YT-10763712-2"); + engdocs._trackPageview(); + } catch(err) {} + + // code.google.com site-wide tracking + try { + _uacct="UA-18071-1"; + _uanchor=1; + _uff=0; + urchinTracker(); + } + catch(e) {/* urchinTracker not available. */} +</script> +<!-- end analytics --> + </div> + </div> <!-- /gc-footer --> + </div> <!-- /gc-container --> +</body></html> diff --git a/chrome/common/extensions/docs/experimental.webInspector.audits.html b/chrome/common/extensions/docs/experimental.webInspector.audits.html new file mode 100644 index 0000000..2520d1c --- /dev/null +++ b/chrome/common/extensions/docs/experimental.webInspector.audits.html @@ -0,0 +1,3256 @@ +<!DOCTYPE html><!-- This page is a placeholder for generated extensions api doc. Note: + 1) The <head> information in this page is significant, should be uniform + across api docs and should be edited only with knowledge of the + templating mechanism. + 3) All <body>.innerHTML is genereated as an rendering step. If viewed in a + browser, it will be re-generated from the template, json schema and + authored overview content. + 4) The <body>.innerHTML is also generated by an offline step so that this + page may easily be indexed by search engines. +--><html xmlns="http://www.w3.org/1999/xhtml"><head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <link href="css/ApiRefStyles.css" rel="stylesheet" type="text/css"> + <link href="css/print.css" rel="stylesheet" type="text/css" media="print"> + <script type="text/javascript" src="../../../third_party/jstemplate/jstemplate_compiled.js"> + </script> + <script type="text/javascript" src="js/api_page_generator.js"></script> + <script type="text/javascript" src="js/bootstrap.js"></script> + <script type="text/javascript" src="js/sidebar.js"></script> + <title>experimental.webInspector.audits - Google Chrome Extensions - Google Code</title></head> + <body> <div id="gc-container" class="labs"> + <div id="devModeWarning"> + You are viewing extension docs in chrome via the 'file:' scheme: are you expecting to see local changes when you refresh? You'll need run chrome with --allow-file-access-from-files. + </div> + <!-- SUBTEMPLATES: DO NOT MOVE FROM THIS LOCATION --> + <!-- In particular, sub-templates that recurse, must be used by allowing + jstemplate to make a copy of the template in this section which + are not operated on by way of the jsskip="true" --> + <div style="display:none"> + + <!-- VALUE --> + <div id="valueTemplate"> + <dt> + <var>paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum">enumerated</span> + <span id="typeTemplate"> + <span> + <a> Type</a> + </span> + <span> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo"> + Undocumented. + </dd> + <dd> + Description of this parameter from the json schema. + </dd> + <dd> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd> + <div></div> + </dd> + + </div> <!-- /VALUE --> + + <div id="functionParametersTemplate"> + <h5>Parameters</h5> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + </div> <!-- /SUBTEMPLATES --> + + <a id="top"></a> + <div id="skipto"> + <a href="#gc-pagecontent">Skip to page content</a> + <a href="#gc-toc">Skip to main navigation</a> + </div> + <!-- API HEADER --> + <table id="header" width="100%" cellspacing="0" border="0"> + <tbody><tr> + <td valign="middle"><a href="http://code.google.com/"><img src="images/code_labs_logo.gif" height="43" width="161" alt="Google Code Labs" style="border:0; margin:0;"></a></td> + <td valign="middle" width="100%" style="padding-left:0.6em;"> + <form action="http://www.google.com/cse" id="cse" style="margin-top:0.5em"> + <div id="gsc-search-box"> + <input type="hidden" name="cx" value="002967670403910741006:61_cvzfqtno"> + <input type="hidden" name="ie" value="UTF-8"> + <input type="text" name="q" value="" size="55"> + <input class="gsc-search-button" type="submit" name="sa" value="Search"> + <br> + <span class="greytext">e.g. "page action" or "tabs"</span> + </div> + </form> + + <script type="text/javascript" src="http://www.google.com/jsapi"></script> + <script type="text/javascript">google.load("elements", "1", {packages: "transliteration"});</script> + <script type="text/javascript" src="http://www.google.com/coop/cse/t13n?form=cse&t13n_langs=en"></script> + <script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=cse&lang=en"></script> + </td> + </tr> + </tbody></table> + + <div id="codesiteContent" class=""> + + <a id="gc-topnav-anchor"></a> + <div id="gc-topnav"> + <h1>Google Chrome Extensions (<a href="http://code.google.com/labs/">Labs</a>)</h1> + <ul id="home" class="gc-topnav-tabs"> + <li id="home_link"> + <a href="index.html" title="Google Chrome Extensions home page">Home</a> + </li> + <li id="docs_link"> + <a href="docs.html" title="Official Google Chrome Extensions documentation">Docs</a> + </li> + <li id="faq_link"> + <a href="faq.html" title="Answers to frequently asked questions about Google Chrome Extensions">FAQ</a> + </li> + <li id="samples_link"> + <a href="samples.html" title="Sample extensions (with source code)">Samples</a> + </li> + <li id="group_link"> + <a href="http://groups.google.com/a/chromium.org/group/chromium-extensions" title="Google Chrome Extensions developer forum">Group</a> + </li> + </ul> + </div> <!-- end gc-topnav --> + + <div class="g-section g-tpl-170"> + <!-- SIDENAV --> + <div class="g-unit g-first" id="gc-toc"> + <ul> + <li><a href="getstarted.html">Getting Started</a></li> + <li><a href="overview.html">Overview</a></li> + <li><a href="whats_new.html">What's New?</a></li> + <li><h2><a href="devguide.html">Developer's Guide</a></h2> + <ul> + <li>Browser UI + <ul> + <li><a href="browserAction.html">Browser Actions</a></li> + <li><a href="contextMenus.html">Context Menus</a></li> + <li><a href="notifications.html">Desktop Notifications</a></li> + <li><a href="omnibox.html">Omnibox</a></li> + <li><a href="options.html">Options Pages</a></li> + <li><a href="override.html">Override Pages</a></li> + <li><a href="pageAction.html">Page Actions</a></li> + </ul> + </li> + <li>Browser Interaction + <ul> + <li><a href="bookmarks.html">Bookmarks</a></li> + <li><a href="cookies.html">Cookies</a></li> + <li><a href="events.html">Events</a></li> + <li><a href="history.html">History</a></li> + <li><a href="management.html">Management</a></li> + <li><a href="tabs.html">Tabs</a></li> + <li><a href="windows.html">Windows</a></li> + </ul> + </li> + <li>Implementation + <ul> + <li><a href="a11y.html">Accessibility</a></li> + <li><a href="background_pages.html">Background Pages</a></li> + <li><a href="content_scripts.html">Content Scripts</a></li> + <li><a href="xhr.html">Cross-Origin XHR</a></li> + <li><a href="idle.html">Idle</a></li> + <li><a href="i18n.html">Internationalization</a></li> + <li><a href="messaging.html">Message Passing</a></li> + <li><a href="npapi.html">NPAPI Plugins</a></li> + </ul> + </li> + <li>Finishing + <ul> + <li><a href="hosting.html">Hosting</a></li> + <li><a href="external_extensions.html">Other Deployment Options</a></li> + </ul> + </li> + </ul> + </li> + <li><h2><a href="apps.html">Packaged Apps</a></h2></li> + <li><h2><a href="tutorials.html">Tutorials</a></h2> + <ul> + <li><a href="tut_debugging.html">Debugging</a></li> + <li><a href="tut_analytics.html">Google Analytics</a></li> + <li><a href="tut_oauth.html">OAuth</a></li> + </ul> + </li> + <li><h2>Reference</h2> + <ul> + <li>Formats + <ul> + <li><a href="manifest.html">Manifest Files</a></li> + <li><a href="match_patterns.html">Match Patterns</a></li> + </ul> + </li> + <li><a href="permission_warnings.html">Permission Warnings</a></li> + <li><a href="api_index.html">chrome.* APIs</a></li> + <li><a href="api_other.html">Other APIs</a></li> + </ul> + </li> + <li><h2><a href="samples.html">Samples</a></h2></li> + <div class="line"> </div> + <li><h2>More</h2> + <ul> + <li><a href="http://code.google.com/chrome/webstore/docs/index.html">Chrome Web Store</a></li> + <li><a href="http://code.google.com/chrome/apps/docs/developers_guide.html">Hosted Apps</a></li> + <li><a href="themes.html">Themes</a></li> + </ul> + </li> + </ul> + </div> + <script> + initToggles(); + </script> + + <div class="g-unit" id="gc-pagecontent"> + <div id="pageTitle"> + <h1 class="page_title">experimental.webInspector.audits</h1> + </div> + <!-- TABLE OF CONTENTS --> + <div id="toc"> + <h2>Contents</h2> + <ol> + <li style="display: none; "> + <a>h2Name</a> + <ol> + <li> + <a>h3Name</a> + </li> + </ol> + </li> + <li> + <a href="#apiReference">API reference: experimental.webInspector.audits</a> + <ol> + <li style="display: none; "> + <a href="#properties">Properties</a> + <ol> + <li> + <a href="#property-anchor">propertyName</a> + </li> + </ol> + </li> + <li> + <a href="#global-methods">Methods</a> + <ol> + <li> + <a href="#method-addCategory">addCategory</a> + </li> + </ol> + </li> + <li style="display: none; "> + <a>Events</a> + <ol> + <li> + <a href="#event-anchor">eventName</a> + </li> + </ol> + </li> + <li> + <a href="#types">Types</a> + <ol> + <li> + <a href="#type-AuditCategory">AuditCategory</a> + </li><li> + <a href="#type-FormattedValue">FormattedValue</a> + </li><li> + <a href="#type-AuditResults">AuditResults</a> + </li><li> + <a href="#type-AuditResultNode">AuditResultNode</a> + </li><li> + <a href="#type-AuditResultSeverity">AuditResultSeverity</a> + </li> + </ol> + </li> + </ol> + </li> + </ol> + </div> + <!-- /TABLE OF CONTENTS --> + + <!-- Standard content lead-in for experimental API pages --> + <p id="classSummary" style="display: none; "> + For information on how to use experimental APIs, see the <a href="experimental.html">chrome.experimental.* APIs</a> page. + </p> + + <!-- STATIC CONTENT PLACEHOLDER --> + <div id="static"></div> + + <!-- API PAGE --> + <div class="apiPage"> + <a name="apiReference"></a> + <h2>API reference: experimental.webInspector.audits</h2> + + <!-- PROPERTIES --> + <div class="apiGroup" style="display: none; "> + <a name="properties"></a> + <h3 id="properties">Properties</h3> + + <div> + <a></a> + <h4>getLastError</h4> + <div class="summary"> + <!-- Note: intentionally longer 80 columns --> + <span>chrome.extension</span><span>lastError</span> + </div> + <div> + </div> + </div> + + </div> <!-- /apiGroup --> + + <!-- METHODS --> + <div id="methodsTemplate" class="apiGroup"> + <a name="global-methods"></a> + <h3>Methods</h3> + + <!-- iterates over all functions --> + <div class="apiItem"> + <a name="method-addCategory"></a> <!-- method-anchor --> + <h4>addCategory</h4> + + <div class="summary"><span>AuditCategory</span> + <!-- Note: intentionally longer 80 columns --> + <span>experimental.webInspector.audits.addCategory</span>(<span class="null"><span style="display: none; ">, </span><span>string</span> + <var><span>displayName</span></var></span><span class="null"><span>, </span><span>number</span> + <var><span>resultCount</span></var></span>)</div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p>Adds an audit category.</p> + + <!-- PARAMETERS --> + <h4>Parameters</h4> + <dl> + <div> + <div> + <dt> + <var>displayName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A display name for the category</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>resultCount</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>number</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>The expected number of audit results in the category.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- RETURNS --> + <h4>Returns</h4> + <dl> + <div> + <div> + <dt> + <var style="display: none; ">paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span> + <a href="experimental.webInspector.audits.html#type-AuditCategory">AuditCategory</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo"> + Undocumented. + </dd> + <dd style="display: none; "> + Description of this parameter from the json schema. + </dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- CALLBACK --> + <div style="display: none; "> + <div> + <h4>Callback function</h4> + <p> + The callback <em>parameter</em> should specify a function + that looks like this: + </p> + <p> + If you specify the <em>callback</em> parameter, it should + specify a function that looks like this: + </p> + + <!-- Note: intentionally longer 80 columns --> + <pre>function(<span>Type param1, Type param2</span>) <span class="subdued">{...}</span>;</pre> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + </div> + + <!-- MIN_VERSION --> + <p style="display: none; "> + This function was added in version <b><span></span></b>. + If you require this function, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </p> + </div> <!-- /description --> + + </div> <!-- /apiItem --> + + </div> <!-- /apiGroup --> + + <!-- EVENTS --> + <div id="eventsTemplate" class="apiGroup" style="display: none; "> + <a></a> + <h3>Events</h3> + <!-- iterates over all events --> + <div class="apiItem"> + <a></a> + <h4>event name</h4> + + <div class="summary"> + <!-- Note: intentionally longer 80 columns --> + <span class="subdued">chrome.bookmarks</span><span>onEvent</span><span class="subdued">.addListener</span>(function(<span>Type param1, Type param2</span>) <span class="subdued">{...}</span>); + </div> + + <div class="description"> + <p class="todo">Undocumented.</p> + <p> + A description from the json schema def of the event goes here. + </p> + + <!-- PARAMETERS --> + <div> + <h4>Parameters</h4> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + </div> <!-- /decription --> + + </div> <!-- /apiItem --> + + </div> <!-- /apiGroup --> + + <!-- TYPES --> + <div class="apiGroup"> + <a name="types"></a> + <h3 id="types">Types</h3> + + <!-- iterates over all types --> + <div class="apiItem"> + <a name="type-AuditCategory"></a> + <h4>AuditCategory</h4> + + <div> + <dt> + <var style="display: none; ">paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>object</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A set of audit rules</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div class="apiGroup" style=""> + <a name="global-AuditCategory-events"></a> + <h3>Events of AuditCategory</h3> + <!-- iterates over all events --> + <div class="apiItem"> + <a name="event-AuditCategory-onAuditStarted"></a> + <h4>onAuditStarted</h4> + + <div class="summary"> + <!-- Note: intentionally longer 80 columns --> + <span class="subdued">auditCategory.</span><span>onAuditStarted</span><span class="subdued">.addListener</span>(function(<span>AuditResults results</span>) <span class="subdued">{...}</span>); + </div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p>Fired when the audit is started, if the category is enabled -- the extension is expected to begin executing audit rules.</p> + + <!-- PARAMETERS --> + <div> + <h4>Parameters</h4> + <dl> + <div> + <div> + <dt> + <var>results</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span> + <a href="experimental.webInspector.audits.html#type-AuditResults">AuditResults</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo"> + Undocumented. + </dd> + <dd style="display: none; "> + Description of this parameter from the json schema. + </dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + </div> + </div> <!-- /decription --> + + </div> <!-- /apiItem --> + + </div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + + </div><div class="apiItem"> + <a name="type-FormattedValue"></a> + <h4>FormattedValue</h4> + + <div> + <dt> + <var style="display: none; ">paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>object</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A value returned from one of the formatters (an URL, code snippet etc), to be passed to createResult or addChild</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + + </div><div class="apiItem"> + <a name="type-AuditResults"></a> + <h4>AuditResults</h4> + + <div> + <dt> + <var style="display: none; ">paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>object</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A collection of audit results for current run of the audit category</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd> + <dl> + <div> + <div> + <dt> + <var>Severity</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span> + <a href="experimental.webInspector.audits.html#type-AuditResultSeverity">AuditResultSeverity</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A class that contains possible values for audit result severities.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>text</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>The contents of the node.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>children</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span> + array of <span><span> + <span> + <a href="experimental.webInspector.audits.html#type-AuditResultNode">AuditResultNode</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span></span> + </span> + <span style="display: none; ">paramType</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>Children of this node.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>expanded</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>boolean</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>Whether the node is expanded by default.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd> + <div class="apiGroup"> + <a name="global-AuditResults-methods"></a> + <h3>Methods of AuditResults</h3> + + <!-- iterates over all functions --> + <div class="apiItem"> + <a name="method-AuditResults-addResult"></a> <!-- method-anchor --> + <h4>addResult</h4> + + <div class="summary"><span style="display: none; ">AuditCategory</span> + <!-- Note: intentionally longer 80 columns --> + <span>auditResults.addResult</span>(<span class="null"><span style="display: none; ">, </span><span>string</span> + <var><span>displayName</span></var></span><span class="null"><span>, </span><span>string</span> + <var><span>description</span></var></span><span class="null"><span>, </span><span>AuditResultSeverety</span> + <var><span>severity</span></var></span><span class="optional"><span>, </span><span>AuditResultNode</span> + <var><span>details</span></var></span>)</div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p style="display: none; ">Adds an audit category.</p> + + <!-- PARAMETERS --> + <h4>Parameters</h4> + <dl> + <div> + <div> + <dt> + <var>displayName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A concise, high-level description of audit rule result</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>description</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A detailed description of what the displayName means</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>severity</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style=""> + <a>AuditResultSeverety</a> + </span> + <span style="display: none; "> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>number</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style=""> + Undocumented. + </dd> + <dd style="display: none; ">The expected number of audit results in the category.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>details</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style=""> + <a href="experimental.webInspector.audits.html#type-AuditResultNode">AuditResultNode</a> + </span> + <span style="display: none; "> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>number</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A subtree that appears under added result that may provide additional details on the violations found</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- RETURNS --> + <h4 style="display: none; ">Returns</h4> + <dl> + <div style="display: none; "> + <div> + <dt> + <var style="display: none; ">paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span> + <a href="experimental.webInspector.audits.html#type-AuditCategory">AuditCategory</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo"> + Undocumented. + </dd> + <dd style="display: none; "> + Description of this parameter from the json schema. + </dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- CALLBACK --> + <div style="display: none; "> + <div> + <h4>Callback function</h4> + <p> + The callback <em>parameter</em> should specify a function + that looks like this: + </p> + <p> + If you specify the <em>callback</em> parameter, it should + specify a function that looks like this: + </p> + + <!-- Note: intentionally longer 80 columns --> + <pre>function(<span>Type param1, Type param2</span>) <span class="subdued">{...}</span>;</pre> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + </div> + + <!-- MIN_VERSION --> + <p style="display: none; "> + This function was added in version <b><span></span></b>. + If you require this function, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </p> + </div> <!-- /description --> + + </div><div class="apiItem"> + <a name="method-AuditResults-createResult"></a> <!-- method-anchor --> + <h4>createResult</h4> + + <div class="summary"><span>AuditResultNode</span> + <!-- Note: intentionally longer 80 columns --> + <span>auditResults.createResult</span>(<span class="null"><span style="display: none; ">, </span><span>string or FormattedValue</span> + <var><span>content ...</span></var></span>)</div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p>Creates a result node that may be user as details parameters to addResult</p> + + <!-- PARAMETERS --> + <h4>Parameters</h4> + <dl> + <div> + <div> + <dt> + <var>content ...</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string or FormattedValue</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>Either string or formatted values returned by one of AuditResult formatters (url, snippet etc)</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- RETURNS --> + <h4>Returns</h4> + <dl> + <div> + <div> + <dt> + <var style="display: none; ">paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span> + <a href="experimental.webInspector.audits.html#type-AuditResultNode">AuditResultNode</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo"> + Undocumented. + </dd> + <dd style="display: none; "> + Description of this parameter from the json schema. + </dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- CALLBACK --> + <div style="display: none; "> + <div> + <h4>Callback function</h4> + <p> + The callback <em>parameter</em> should specify a function + that looks like this: + </p> + <p> + If you specify the <em>callback</em> parameter, it should + specify a function that looks like this: + </p> + + <!-- Note: intentionally longer 80 columns --> + <pre>function(<span>Type param1, Type param2</span>) <span class="subdued">{...}</span>;</pre> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + </div> + + <!-- MIN_VERSION --> + <p style="display: none; "> + This function was added in version <b><span></span></b>. + If you require this function, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </p> + </div> <!-- /description --> + + </div><div class="apiItem"> + <a name="method-AuditResults-done"></a> <!-- method-anchor --> + <h4>done</h4> + + <div class="summary"><span style="display: none; ">AuditCategory</span> + <!-- Note: intentionally longer 80 columns --> + <span>auditResults.done</span>(<span class="null" style="display: none; "><span style="display: none; ">, </span><span>string</span> + <var><span>displayName</span></var></span><span class="null" style="display: none; "><span>, </span><span>number</span> + <var><span>resultCount</span></var></span>)</div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p>Signals the WebInspector Audits panel that the run of this category is over. Normally the run completes automatically when a number of added top-level results is equal to that declared when AuditCategory was created.</p> + + <!-- PARAMETERS --> + <h4 style="display: none; ">Parameters</h4> + <dl> + <div style="display: none; "> + <div> + <dt> + <var>displayName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A display name for the category</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div style="display: none; "> + <div> + <dt> + <var>resultCount</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>number</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>The expected number of audit results in the category.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- RETURNS --> + <h4 style="display: none; ">Returns</h4> + <dl> + <div style="display: none; "> + <div> + <dt> + <var style="display: none; ">paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span> + <a href="experimental.webInspector.audits.html#type-AuditCategory">AuditCategory</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo"> + Undocumented. + </dd> + <dd style="display: none; "> + Description of this parameter from the json schema. + </dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- CALLBACK --> + <div style="display: none; "> + <div> + <h4>Callback function</h4> + <p> + The callback <em>parameter</em> should specify a function + that looks like this: + </p> + <p> + If you specify the <em>callback</em> parameter, it should + specify a function that looks like this: + </p> + + <!-- Note: intentionally longer 80 columns --> + <pre>function(<span>Type param1, Type param2</span>) <span class="subdued">{...}</span>;</pre> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + </div> + + <!-- MIN_VERSION --> + <p style="display: none; "> + This function was added in version <b><span></span></b>. + If you require this function, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </p> + </div> <!-- /description --> + + </div><div class="apiItem"> + <a name="method-AuditResults-snippet"></a> <!-- method-anchor --> + <h4>snippet</h4> + + <div class="summary"><span>FormattedValue</span> + <!-- Note: intentionally longer 80 columns --> + <span>auditResults.snippet</span>(<span class="null"><span style="display: none; ">, </span><span>string</span> + <var><span>text</span></var></span>)</div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p>Render passed text as a code snippet in the Audits panel</p> + + <!-- PARAMETERS --> + <h4>Parameters</h4> + <dl> + <div> + <div> + <dt> + <var>text</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>Snippet text</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- RETURNS --> + <h4>Returns</h4> + <dl> + <div> + <div> + <dt> + <var style="display: none; ">paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span> + <a href="experimental.webInspector.audits.html#type-FormattedValue">FormattedValue</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo"> + Undocumented. + </dd> + <dd style="display: none; "> + Description of this parameter from the json schema. + </dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- CALLBACK --> + <div style="display: none; "> + <div> + <h4>Callback function</h4> + <p> + The callback <em>parameter</em> should specify a function + that looks like this: + </p> + <p> + If you specify the <em>callback</em> parameter, it should + specify a function that looks like this: + </p> + + <!-- Note: intentionally longer 80 columns --> + <pre>function(<span>Type param1, Type param2</span>) <span class="subdued">{...}</span>;</pre> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + </div> + + <!-- MIN_VERSION --> + <p style="display: none; "> + This function was added in version <b><span></span></b>. + If you require this function, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </p> + </div> <!-- /description --> + + </div><div class="apiItem"> + <a name="method-AuditResults-url"></a> <!-- method-anchor --> + <h4>url</h4> + + <div class="summary"><span>FormattedValue</span> + <!-- Note: intentionally longer 80 columns --> + <span>auditResults.url</span>(<span class="null"><span style="display: none; ">, </span><span>string</span> + <var><span>href</span></var></span><span class="optional"><span>, </span><span>string</span> + <var><span>displayText</span></var></span>)</div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p>Render passed value as an URL in the Audits panel</p> + + <!-- PARAMETERS --> + <h4>Parameters</h4> + <dl> + <div> + <div> + <dt> + <var>href</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>An URL that will appear as href value on resulting link</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>displayText</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A text that will appear to user</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- RETURNS --> + <h4>Returns</h4> + <dl> + <div> + <div> + <dt> + <var style="display: none; ">paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span> + <a href="experimental.webInspector.audits.html#type-FormattedValue">FormattedValue</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo"> + Undocumented. + </dd> + <dd style="display: none; "> + Description of this parameter from the json schema. + </dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- CALLBACK --> + <div style="display: none; "> + <div> + <h4>Callback function</h4> + <p> + The callback <em>parameter</em> should specify a function + that looks like this: + </p> + <p> + If you specify the <em>callback</em> parameter, it should + specify a function that looks like this: + </p> + + <!-- Note: intentionally longer 80 columns --> + <pre>function(<span>Type param1, Type param2</span>) <span class="subdued">{...}</span>;</pre> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + </div> + + <!-- MIN_VERSION --> + <p style="display: none; "> + This function was added in version <b><span></span></b>. + If you require this function, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </p> + </div> <!-- /description --> + + </div> <!-- /apiItem --> + + </div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + + </div><div class="apiItem"> + <a name="type-AuditResultNode"></a> + <h4>AuditResultNode</h4> + + <div> + <dt> + <var style="display: none; ">paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>object</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A node in the audit result trees. Displays some content and optionally has children node</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd> + <dl> + <div> + <div> + <dt> + <var>expanded</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>boolean</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>If set, the subtree will always be expanded</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd> + <div class="apiGroup"> + <a name="global-AuditResultNode-methods"></a> + <h3>Methods of AuditResultNode</h3> + + <!-- iterates over all functions --> + <div class="apiItem"> + <a name="method-AuditResultNode-addChild"></a> <!-- method-anchor --> + <h4>addChild</h4> + + <div class="summary"><span>AuditResultNode</span> + <!-- Note: intentionally longer 80 columns --> + <span>auditResultNode.addChild</span>(<span class="null"><span style="display: none; ">, </span><span>string or FormattedValue</span> + <var><span>content ...</span></var></span>)</div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p>Adds another child node to this node</p> + + <!-- PARAMETERS --> + <h4>Parameters</h4> + <dl> + <div> + <div> + <dt> + <var>content ...</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string or FormattedValue</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>Either string or formatted values returned by one of AuditResult formatters (url, snippet etc)</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- RETURNS --> + <h4>Returns</h4> + <dl> + <div> + <div> + <dt> + <var style="display: none; ">paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span> + <a href="experimental.webInspector.audits.html#type-AuditResultNode">AuditResultNode</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo"> + Undocumented. + </dd> + <dd style="display: none; "> + Description of this parameter from the json schema. + </dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- CALLBACK --> + <div style="display: none; "> + <div> + <h4>Callback function</h4> + <p> + The callback <em>parameter</em> should specify a function + that looks like this: + </p> + <p> + If you specify the <em>callback</em> parameter, it should + specify a function that looks like this: + </p> + + <!-- Note: intentionally longer 80 columns --> + <pre>function(<span>Type param1, Type param2</span>) <span class="subdued">{...}</span>;</pre> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + </div> + + <!-- MIN_VERSION --> + <p style="display: none; "> + This function was added in version <b><span></span></b>. + If you require this function, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </p> + </div> <!-- /description --> + + </div> <!-- /apiItem --> + + </div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + + </div><div class="apiItem"> + <a name="type-AuditResultSeverity"></a> + <h4>AuditResultSeverity</h4> + + <div> + <dt> + <var style="display: none; ">paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>object</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo"> + Undocumented. + </dd> + <dd style="display: none; "> + Description of this parameter from the json schema. + </dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd> + <dl> + <div> + <div> + <dt> + <var>Info</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo"> + Undocumented. + </dd> + <dd style="display: none; "> + Description of this parameter from the json schema. + </dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>Warning</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo"> + Undocumented. + </dd> + <dd style="display: none; "> + Description of this parameter from the json schema. + </dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>Severe</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo"> + Undocumented. + </dd> + <dd style="display: none; "> + Description of this parameter from the json schema. + </dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + + </div> <!-- /apiItem --> + + </div> <!-- /apiGroup --> + + </div> <!-- /apiPage --> + </div> <!-- /gc-pagecontent --> + </div> <!-- /g-section --> + </div> <!-- /codesiteContent --> + <div id="gc-footer" --=""> + <div class="text"> + <p> + Except as otherwise <a href="http://code.google.com/policies.html#restrictions">noted</a>, + the content of this page is licensed under the <a rel="license" href="http://creativecommons.org/licenses/by/3.0/">Creative Commons + Attribution 3.0 License</a>, and code samples are licensed under the + <a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>. + </p> + <p> + ©2011 Google + </p> + +<!-- begin analytics --> +<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script> +<script src="http://www.google-analytics.com/ga.js" type="text/javascript"></script> + +<script type="text/javascript"> + // chrome doc tracking + try { + var engdocs = _gat._getTracker("YT-10763712-2"); + engdocs._trackPageview(); + } catch(err) {} + + // code.google.com site-wide tracking + try { + _uacct="UA-18071-1"; + _uanchor=1; + _uff=0; + urchinTracker(); + } + catch(e) {/* urchinTracker not available. */} +</script> +<!-- end analytics --> + </div> + </div> <!-- /gc-footer --> + </div> <!-- /gc-container --> +</body></html> diff --git a/chrome/common/extensions/docs/experimental.webInspector.inspectedWindow.html b/chrome/common/extensions/docs/experimental.webInspector.inspectedWindow.html new file mode 100644 index 0000000..b1d645c --- /dev/null +++ b/chrome/common/extensions/docs/experimental.webInspector.inspectedWindow.html @@ -0,0 +1,826 @@ +<!DOCTYPE html><!-- This page is a placeholder for generated extensions api doc. Note: + 1) The <head> information in this page is significant, should be uniform + across api docs and should be edited only with knowledge of the + templating mechanism. + 3) All <body>.innerHTML is genereated as an rendering step. If viewed in a + browser, it will be re-generated from the template, json schema and + authored overview content. + 4) The <body>.innerHTML is also generated by an offline step so that this + page may easily be indexed by search engines. +--><html xmlns="http://www.w3.org/1999/xhtml"><head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <link href="css/ApiRefStyles.css" rel="stylesheet" type="text/css"> + <link href="css/print.css" rel="stylesheet" type="text/css" media="print"> + <script type="text/javascript" src="../../../third_party/jstemplate/jstemplate_compiled.js"> + </script> + <script type="text/javascript" src="js/api_page_generator.js"></script> + <script type="text/javascript" src="js/bootstrap.js"></script> + <script type="text/javascript" src="js/sidebar.js"></script> + <title>experimental.webInspector.inspectedWindow - Google Chrome Extensions - Google Code</title></head> + <body> <div id="gc-container" class="labs"> + <div id="devModeWarning"> + You are viewing extension docs in chrome via the 'file:' scheme: are you expecting to see local changes when you refresh? You'll need run chrome with --allow-file-access-from-files. + </div> + <!-- SUBTEMPLATES: DO NOT MOVE FROM THIS LOCATION --> + <!-- In particular, sub-templates that recurse, must be used by allowing + jstemplate to make a copy of the template in this section which + are not operated on by way of the jsskip="true" --> + <div style="display:none"> + + <!-- VALUE --> + <div id="valueTemplate"> + <dt> + <var>paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum">enumerated</span> + <span id="typeTemplate"> + <span> + <a> Type</a> + </span> + <span> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo"> + Undocumented. + </dd> + <dd> + Description of this parameter from the json schema. + </dd> + <dd> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd> + <div></div> + </dd> + + </div> <!-- /VALUE --> + + <div id="functionParametersTemplate"> + <h5>Parameters</h5> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + </div> <!-- /SUBTEMPLATES --> + + <a id="top"></a> + <div id="skipto"> + <a href="#gc-pagecontent">Skip to page content</a> + <a href="#gc-toc">Skip to main navigation</a> + </div> + <!-- API HEADER --> + <table id="header" width="100%" cellspacing="0" border="0"> + <tbody><tr> + <td valign="middle"><a href="http://code.google.com/"><img src="images/code_labs_logo.gif" height="43" width="161" alt="Google Code Labs" style="border:0; margin:0;"></a></td> + <td valign="middle" width="100%" style="padding-left:0.6em;"> + <form action="http://www.google.com/cse" id="cse" style="margin-top:0.5em"> + <div id="gsc-search-box"> + <input type="hidden" name="cx" value="002967670403910741006:61_cvzfqtno"> + <input type="hidden" name="ie" value="UTF-8"> + <input type="text" name="q" value="" size="55"> + <input class="gsc-search-button" type="submit" name="sa" value="Search"> + <br> + <span class="greytext">e.g. "page action" or "tabs"</span> + </div> + </form> + + <script type="text/javascript" src="http://www.google.com/jsapi"></script> + <script type="text/javascript">google.load("elements", "1", {packages: "transliteration"});</script> + <script type="text/javascript" src="http://www.google.com/coop/cse/t13n?form=cse&t13n_langs=en"></script> + <script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=cse&lang=en"></script> + </td> + </tr> + </tbody></table> + + <div id="codesiteContent" class=""> + + <a id="gc-topnav-anchor"></a> + <div id="gc-topnav"> + <h1>Google Chrome Extensions (<a href="http://code.google.com/labs/">Labs</a>)</h1> + <ul id="home" class="gc-topnav-tabs"> + <li id="home_link"> + <a href="index.html" title="Google Chrome Extensions home page">Home</a> + </li> + <li id="docs_link"> + <a href="docs.html" title="Official Google Chrome Extensions documentation">Docs</a> + </li> + <li id="faq_link"> + <a href="faq.html" title="Answers to frequently asked questions about Google Chrome Extensions">FAQ</a> + </li> + <li id="samples_link"> + <a href="samples.html" title="Sample extensions (with source code)">Samples</a> + </li> + <li id="group_link"> + <a href="http://groups.google.com/a/chromium.org/group/chromium-extensions" title="Google Chrome Extensions developer forum">Group</a> + </li> + </ul> + </div> <!-- end gc-topnav --> + + <div class="g-section g-tpl-170"> + <!-- SIDENAV --> + <div class="g-unit g-first" id="gc-toc"> + <ul> + <li><a href="getstarted.html">Getting Started</a></li> + <li><a href="overview.html">Overview</a></li> + <li><a href="whats_new.html">What's New?</a></li> + <li><h2><a href="devguide.html">Developer's Guide</a></h2> + <ul> + <li>Browser UI + <ul> + <li><a href="browserAction.html">Browser Actions</a></li> + <li><a href="contextMenus.html">Context Menus</a></li> + <li><a href="notifications.html">Desktop Notifications</a></li> + <li><a href="omnibox.html">Omnibox</a></li> + <li><a href="options.html">Options Pages</a></li> + <li><a href="override.html">Override Pages</a></li> + <li><a href="pageAction.html">Page Actions</a></li> + </ul> + </li> + <li>Browser Interaction + <ul> + <li><a href="bookmarks.html">Bookmarks</a></li> + <li><a href="cookies.html">Cookies</a></li> + <li><a href="events.html">Events</a></li> + <li><a href="history.html">History</a></li> + <li><a href="management.html">Management</a></li> + <li><a href="tabs.html">Tabs</a></li> + <li><a href="windows.html">Windows</a></li> + </ul> + </li> + <li>Implementation + <ul> + <li><a href="a11y.html">Accessibility</a></li> + <li><a href="background_pages.html">Background Pages</a></li> + <li><a href="content_scripts.html">Content Scripts</a></li> + <li><a href="xhr.html">Cross-Origin XHR</a></li> + <li><a href="idle.html">Idle</a></li> + <li><a href="i18n.html">Internationalization</a></li> + <li><a href="messaging.html">Message Passing</a></li> + <li><a href="npapi.html">NPAPI Plugins</a></li> + </ul> + </li> + <li>Finishing + <ul> + <li><a href="hosting.html">Hosting</a></li> + <li><a href="external_extensions.html">Other Deployment Options</a></li> + </ul> + </li> + </ul> + </li> + <li><h2><a href="apps.html">Packaged Apps</a></h2></li> + <li><h2><a href="tutorials.html">Tutorials</a></h2> + <ul> + <li><a href="tut_debugging.html">Debugging</a></li> + <li><a href="tut_analytics.html">Google Analytics</a></li> + <li><a href="tut_oauth.html">OAuth</a></li> + </ul> + </li> + <li><h2>Reference</h2> + <ul> + <li>Formats + <ul> + <li><a href="manifest.html">Manifest Files</a></li> + <li><a href="match_patterns.html">Match Patterns</a></li> + </ul> + </li> + <li><a href="permission_warnings.html">Permission Warnings</a></li> + <li><a href="api_index.html">chrome.* APIs</a></li> + <li><a href="api_other.html">Other APIs</a></li> + </ul> + </li> + <li><h2><a href="samples.html">Samples</a></h2></li> + <div class="line"> </div> + <li><h2>More</h2> + <ul> + <li><a href="http://code.google.com/chrome/webstore/docs/index.html">Chrome Web Store</a></li> + <li><a href="http://code.google.com/chrome/apps/docs/developers_guide.html">Hosted Apps</a></li> + <li><a href="themes.html">Themes</a></li> + </ul> + </li> + </ul> + </div> + <script> + initToggles(); + </script> + + <div class="g-unit" id="gc-pagecontent"> + <div id="pageTitle"> + <h1 class="page_title">experimental.webInspector.inspectedWindow</h1> + </div> + <!-- TABLE OF CONTENTS --> + <div id="toc"> + <h2>Contents</h2> + <ol> + <li style="display: none; "> + <a>h2Name</a> + <ol> + <li> + <a>h3Name</a> + </li> + </ol> + </li> + <li> + <a href="#apiReference">API reference: experimental.webInspector.inspectedWindow</a> + <ol> + <li style="display: none; "> + <a href="#properties">Properties</a> + <ol> + <li> + <a href="#property-anchor">propertyName</a> + </li> + </ol> + </li> + <li> + <a href="#global-methods">Methods</a> + <ol> + <li> + <a href="#method-eval">eval</a> + </li> + </ol> + </li> + <li> + <a href="#global-events">Events</a> + <ol> + <li> + <a href="#event-onDOMContentLoaded">onDOMContentLoaded</a> + </li><li> + <a href="#event-onLoaded">onLoaded</a> + </li><li> + <a href="#event-onNavigated">onNavigated</a> + </li> + </ol> + </li> + <li style="display: none; "> + <a href="#types">Types</a> + <ol> + <li> + <a href="#id-anchor">id</a> + </li> + </ol> + </li> + </ol> + </li> + </ol> + </div> + <!-- /TABLE OF CONTENTS --> + + <!-- Standard content lead-in for experimental API pages --> + <p id="classSummary" style="display: none; "> + For information on how to use experimental APIs, see the <a href="experimental.html">chrome.experimental.* APIs</a> page. + </p> + + <!-- STATIC CONTENT PLACEHOLDER --> + <div id="static"></div> + + <!-- API PAGE --> + <div class="apiPage"> + <a name="apiReference"></a> + <h2>API reference: experimental.webInspector.inspectedWindow</h2> + + <!-- PROPERTIES --> + <div class="apiGroup" style="display: none; "> + <a name="properties"></a> + <h3 id="properties">Properties</h3> + + <div> + <a></a> + <h4>getLastError</h4> + <div class="summary"> + <!-- Note: intentionally longer 80 columns --> + <span>chrome.extension</span><span>lastError</span> + </div> + <div> + </div> + </div> + + </div> <!-- /apiGroup --> + + <!-- METHODS --> + <div id="methodsTemplate" class="apiGroup"> + <a name="global-methods"></a> + <h3>Methods</h3> + + <!-- iterates over all functions --> + <div class="apiItem"> + <a name="method-eval"></a> <!-- method-anchor --> + <h4>eval</h4> + + <div class="summary"><span style="display: none; ">void</span> + <!-- Note: intentionally longer 80 columns --> + <span>experimental.webInspector.inspectedWindow.eval</span>(<span class="null"><span style="display: none; ">, </span><span>string</span> + <var><span>expression</span></var></span><span class="null"><span>, </span><span>function</span> + <var><span>callback</span></var></span>)</div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p>Evaluates a JavaScript expression in the context of inspected page (NOTE: the expression must evaluate to a JSON-compliant object, otherwise the exception is thrown)</p> + + <!-- PARAMETERS --> + <h4>Parameters</h4> + <dl> + <div> + <div> + <dt> + <var>expression</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>An expression to evaluate.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>callback</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>function</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A function called when evaluation completes.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- RETURNS --> + <h4 style="display: none; ">Returns</h4> + <dl> + <div style="display: none; "> + <div> + </div> + </div> + </dl> + + <!-- CALLBACK --> + <div> + <div> + <h4>Callback function</h4> + <p> + The callback <em>parameter</em> should specify a function + that looks like this: + </p> + <p style="display: none; "> + If you specify the <em>callback</em> parameter, it should + specify a function that looks like this: + </p> + + <!-- Note: intentionally longer 80 columns --> + <pre>function(<span>object result, boolean isException</span>) <span class="subdued">{...}</span>;</pre> + <dl> + <div> + <div> + <dt> + <var>result</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>object</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>The result of evaluation</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>isException</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>boolean</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>Set if an exception was caught while evaluating the expression</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + </div> + </div> + + <!-- MIN_VERSION --> + <p style="display: none; "> + This function was added in version <b><span></span></b>. + If you require this function, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </p> + </div> <!-- /description --> + + </div> <!-- /apiItem --> + + </div> <!-- /apiGroup --> + + <!-- EVENTS --> + <div id="eventsTemplate" class="apiGroup"> + <a name="global-events"></a> + <h3>Events</h3> + <!-- iterates over all events --> + <div class="apiItem"> + <a name="event-onDOMContentLoaded"></a> + <h4>onDOMContentLoaded</h4> + + <div class="summary"> + <!-- Note: intentionally longer 80 columns --> + <span class="subdued">experimental.webInspector.inspectedWindow.</span><span>onDOMContentLoaded</span><span class="subdued">.addListener</span>(function(<span></span>) <span class="subdued">{...}</span>); + </div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p>Fired after DOMContentLoaded event on inspected page is fired.</p> + + <!-- PARAMETERS --> + <div style="display: none; "> + <h4>Parameters</h4> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + </div> <!-- /decription --> + + </div><div class="apiItem"> + <a name="event-onLoaded"></a> + <h4>onLoaded</h4> + + <div class="summary"> + <!-- Note: intentionally longer 80 columns --> + <span class="subdued">experimental.webInspector.inspectedWindow.</span><span>onLoaded</span><span class="subdued">.addListener</span>(function(<span></span>) <span class="subdued">{...}</span>); + </div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p>Fired after load event on inspected page is fired.</p> + + <!-- PARAMETERS --> + <div style="display: none; "> + <h4>Parameters</h4> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + </div> <!-- /decription --> + + </div><div class="apiItem"> + <a name="event-onNavigated"></a> + <h4>onNavigated</h4> + + <div class="summary"> + <!-- Note: intentionally longer 80 columns --> + <span class="subdued">experimental.webInspector.inspectedWindow.</span><span>onNavigated</span><span class="subdued">.addListener</span>(function(<span></span>) <span class="subdued">{...}</span>); + </div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p>Fired when navigation occurs in the window being inspected.</p> + + <!-- PARAMETERS --> + <div style="display: none; "> + <h4>Parameters</h4> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + </div> <!-- /decription --> + + </div> <!-- /apiItem --> + + </div> <!-- /apiGroup --> + + <!-- TYPES --> + <div class="apiGroup" style="display: none; "> + <a name="types"></a> + <h3 id="types">Types</h3> + + <!-- iterates over all types --> + <div class="apiItem"> + <a></a> + <h4>type name</h4> + + <div> + </div> + + </div> <!-- /apiItem --> + + </div> <!-- /apiGroup --> + + </div> <!-- /apiPage --> + </div> <!-- /gc-pagecontent --> + </div> <!-- /g-section --> + </div> <!-- /codesiteContent --> + <div id="gc-footer" --=""> + <div class="text"> + <p> + Except as otherwise <a href="http://code.google.com/policies.html#restrictions">noted</a>, + the content of this page is licensed under the <a rel="license" href="http://creativecommons.org/licenses/by/3.0/">Creative Commons + Attribution 3.0 License</a>, and code samples are licensed under the + <a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>. + </p> + <p> + ©2011 Google + </p> + +<!-- begin analytics --> +<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script> +<script src="http://www.google-analytics.com/ga.js" type="text/javascript"></script> + +<script type="text/javascript"> + // chrome doc tracking + try { + var engdocs = _gat._getTracker("YT-10763712-2"); + engdocs._trackPageview(); + } catch(err) {} + + // code.google.com site-wide tracking + try { + _uacct="UA-18071-1"; + _uanchor=1; + _uff=0; + urchinTracker(); + } + catch(e) {/* urchinTracker not available. */} +</script> +<!-- end analytics --> + </div> + </div> <!-- /gc-footer --> + </div> <!-- /gc-container --> +</body></html> diff --git a/chrome/common/extensions/docs/experimental.webInspector.panels.html b/chrome/common/extensions/docs/experimental.webInspector.panels.html new file mode 100644 index 0000000..29a1295 --- /dev/null +++ b/chrome/common/extensions/docs/experimental.webInspector.panels.html @@ -0,0 +1,3056 @@ +<!DOCTYPE html><!-- This page is a placeholder for generated extensions api doc. Note: + 1) The <head> information in this page is significant, should be uniform + across api docs and should be edited only with knowledge of the + templating mechanism. + 3) All <body>.innerHTML is genereated as an rendering step. If viewed in a + browser, it will be re-generated from the template, json schema and + authored overview content. + 4) The <body>.innerHTML is also generated by an offline step so that this + page may easily be indexed by search engines. +--><html xmlns="http://www.w3.org/1999/xhtml"><head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <link href="css/ApiRefStyles.css" rel="stylesheet" type="text/css"> + <link href="css/print.css" rel="stylesheet" type="text/css" media="print"> + <script type="text/javascript" src="../../../third_party/jstemplate/jstemplate_compiled.js"> + </script> + <script type="text/javascript" src="js/api_page_generator.js"></script> + <script type="text/javascript" src="js/bootstrap.js"></script> + <script type="text/javascript" src="js/sidebar.js"></script> + <title>experimental.webInspector.panels - Google Chrome Extensions - Google Code</title></head> + <body> <div id="gc-container" class="labs"> + <div id="devModeWarning"> + You are viewing extension docs in chrome via the 'file:' scheme: are you expecting to see local changes when you refresh? You'll need run chrome with --allow-file-access-from-files. + </div> + <!-- SUBTEMPLATES: DO NOT MOVE FROM THIS LOCATION --> + <!-- In particular, sub-templates that recurse, must be used by allowing + jstemplate to make a copy of the template in this section which + are not operated on by way of the jsskip="true" --> + <div style="display:none"> + + <!-- VALUE --> + <div id="valueTemplate"> + <dt> + <var>paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum">enumerated</span> + <span id="typeTemplate"> + <span> + <a> Type</a> + </span> + <span> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo"> + Undocumented. + </dd> + <dd> + Description of this parameter from the json schema. + </dd> + <dd> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd> + <div></div> + </dd> + + </div> <!-- /VALUE --> + + <div id="functionParametersTemplate"> + <h5>Parameters</h5> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + </div> <!-- /SUBTEMPLATES --> + + <a id="top"></a> + <div id="skipto"> + <a href="#gc-pagecontent">Skip to page content</a> + <a href="#gc-toc">Skip to main navigation</a> + </div> + <!-- API HEADER --> + <table id="header" width="100%" cellspacing="0" border="0"> + <tbody><tr> + <td valign="middle"><a href="http://code.google.com/"><img src="images/code_labs_logo.gif" height="43" width="161" alt="Google Code Labs" style="border:0; margin:0;"></a></td> + <td valign="middle" width="100%" style="padding-left:0.6em;"> + <form action="http://www.google.com/cse" id="cse" style="margin-top:0.5em"> + <div id="gsc-search-box"> + <input type="hidden" name="cx" value="002967670403910741006:61_cvzfqtno"> + <input type="hidden" name="ie" value="UTF-8"> + <input type="text" name="q" value="" size="55"> + <input class="gsc-search-button" type="submit" name="sa" value="Search"> + <br> + <span class="greytext">e.g. "page action" or "tabs"</span> + </div> + </form> + + <script type="text/javascript" src="http://www.google.com/jsapi"></script> + <script type="text/javascript">google.load("elements", "1", {packages: "transliteration"});</script> + <script type="text/javascript" src="http://www.google.com/coop/cse/t13n?form=cse&t13n_langs=en"></script> + <script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=cse&lang=en"></script> + </td> + </tr> + </tbody></table> + + <div id="codesiteContent" class=""> + + <a id="gc-topnav-anchor"></a> + <div id="gc-topnav"> + <h1>Google Chrome Extensions (<a href="http://code.google.com/labs/">Labs</a>)</h1> + <ul id="home" class="gc-topnav-tabs"> + <li id="home_link"> + <a href="index.html" title="Google Chrome Extensions home page">Home</a> + </li> + <li id="docs_link"> + <a href="docs.html" title="Official Google Chrome Extensions documentation">Docs</a> + </li> + <li id="faq_link"> + <a href="faq.html" title="Answers to frequently asked questions about Google Chrome Extensions">FAQ</a> + </li> + <li id="samples_link"> + <a href="samples.html" title="Sample extensions (with source code)">Samples</a> + </li> + <li id="group_link"> + <a href="http://groups.google.com/a/chromium.org/group/chromium-extensions" title="Google Chrome Extensions developer forum">Group</a> + </li> + </ul> + </div> <!-- end gc-topnav --> + + <div class="g-section g-tpl-170"> + <!-- SIDENAV --> + <div class="g-unit g-first" id="gc-toc"> + <ul> + <li><a href="getstarted.html">Getting Started</a></li> + <li><a href="overview.html">Overview</a></li> + <li><a href="whats_new.html">What's New?</a></li> + <li><h2><a href="devguide.html">Developer's Guide</a></h2> + <ul> + <li>Browser UI + <ul> + <li><a href="browserAction.html">Browser Actions</a></li> + <li><a href="contextMenus.html">Context Menus</a></li> + <li><a href="notifications.html">Desktop Notifications</a></li> + <li><a href="omnibox.html">Omnibox</a></li> + <li><a href="options.html">Options Pages</a></li> + <li><a href="override.html">Override Pages</a></li> + <li><a href="pageAction.html">Page Actions</a></li> + </ul> + </li> + <li>Browser Interaction + <ul> + <li><a href="bookmarks.html">Bookmarks</a></li> + <li><a href="cookies.html">Cookies</a></li> + <li><a href="events.html">Events</a></li> + <li><a href="history.html">History</a></li> + <li><a href="management.html">Management</a></li> + <li><a href="tabs.html">Tabs</a></li> + <li><a href="windows.html">Windows</a></li> + </ul> + </li> + <li>Implementation + <ul> + <li><a href="a11y.html">Accessibility</a></li> + <li><a href="background_pages.html">Background Pages</a></li> + <li><a href="content_scripts.html">Content Scripts</a></li> + <li><a href="xhr.html">Cross-Origin XHR</a></li> + <li><a href="idle.html">Idle</a></li> + <li><a href="i18n.html">Internationalization</a></li> + <li><a href="messaging.html">Message Passing</a></li> + <li><a href="npapi.html">NPAPI Plugins</a></li> + </ul> + </li> + <li>Finishing + <ul> + <li><a href="hosting.html">Hosting</a></li> + <li><a href="external_extensions.html">Other Deployment Options</a></li> + </ul> + </li> + </ul> + </li> + <li><h2><a href="apps.html">Packaged Apps</a></h2></li> + <li><h2><a href="tutorials.html">Tutorials</a></h2> + <ul> + <li><a href="tut_debugging.html">Debugging</a></li> + <li><a href="tut_analytics.html">Google Analytics</a></li> + <li><a href="tut_oauth.html">OAuth</a></li> + </ul> + </li> + <li><h2>Reference</h2> + <ul> + <li>Formats + <ul> + <li><a href="manifest.html">Manifest Files</a></li> + <li><a href="match_patterns.html">Match Patterns</a></li> + </ul> + </li> + <li><a href="permission_warnings.html">Permission Warnings</a></li> + <li><a href="api_index.html">chrome.* APIs</a></li> + <li><a href="api_other.html">Other APIs</a></li> + </ul> + </li> + <li><h2><a href="samples.html">Samples</a></h2></li> + <div class="line"> </div> + <li><h2>More</h2> + <ul> + <li><a href="http://code.google.com/chrome/webstore/docs/index.html">Chrome Web Store</a></li> + <li><a href="http://code.google.com/chrome/apps/docs/developers_guide.html">Hosted Apps</a></li> + <li><a href="themes.html">Themes</a></li> + </ul> + </li> + </ul> + </div> + <script> + initToggles(); + </script> + + <div class="g-unit" id="gc-pagecontent"> + <div id="pageTitle"> + <h1 class="page_title">experimental.webInspector.panels</h1> + </div> + <!-- TABLE OF CONTENTS --> + <div id="toc"> + <h2>Contents</h2> + <ol> + <li style="display: none; "> + <a>h2Name</a> + <ol> + <li> + <a>h3Name</a> + </li> + </ol> + </li> + <li> + <a href="#apiReference">API reference: experimental.webInspector.panels</a> + <ol> + <li> + <a href="#properties">Properties</a> + <ol> + <li> + <a href="#property-scripts">scripts</a> + </li> + </ol> + </li> + <li> + <a href="#global-methods">Methods</a> + <ol> + <li> + <a href="#method-create">create</a> + </li> + </ol> + </li> + <li style="display: none; "> + <a>Events</a> + <ol> + <li> + <a href="#event-anchor">eventName</a> + </li> + </ol> + </li> + <li> + <a href="#types">Types</a> + <ol> + <li> + <a href="#type-PanelWithSidebars">PanelWithSidebars</a> + </li><li> + <a href="#type-ElementsPanel">ElementsPanel</a> + </li><li> + <a href="#type-ExtensionPanel">ExtensionPanel</a> + </li><li> + <a href="#type-ExtensionSidebarPane">ExtensionSidebarPane</a> + </li><li> + <a href="#type-WatchExpressionSidebarPane">WatchExpressionSidebarPane</a> + </li> + </ol> + </li> + </ol> + </li> + </ol> + </div> + <!-- /TABLE OF CONTENTS --> + + <!-- Standard content lead-in for experimental API pages --> + <p id="classSummary" style="display: none; "> + For information on how to use experimental APIs, see the <a href="experimental.html">chrome.experimental.* APIs</a> page. + </p> + + <!-- STATIC CONTENT PLACEHOLDER --> + <div id="static"></div> + + <!-- API PAGE --> + <div class="apiPage"> + <a name="apiReference"></a> + <h2>API reference: experimental.webInspector.panels</h2> + + <!-- PROPERTIES --> + <div class="apiGroup"> + <a name="properties"></a> + <h3 id="properties">Properties</h3> + + <div> + <a name="property-scripts"></a> + <h4>scripts</h4> + <div class="summary"> + <!-- Note: intentionally longer 80 columns --> + <span>experimental.webInspector.panels.</span><span>scripts</span> + </div> + <div> + <dt> + <var>scripts</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span> + <a>ScriptsPanel</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>Scripts panel</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + + </div> <!-- /apiGroup --> + + <!-- METHODS --> + <div id="methodsTemplate" class="apiGroup"> + <a name="global-methods"></a> + <h3>Methods</h3> + + <!-- iterates over all functions --> + <div class="apiItem"> + <a name="method-create"></a> <!-- method-anchor --> + <h4>create</h4> + + <div class="summary"><span>ExtensionPanel</span> + <!-- Note: intentionally longer 80 columns --> + <span>experimental.webInspector.panels.create</span>(<span class="null"><span style="display: none; ">, </span><span>string</span> + <var><span>title</span></var></span><span class="null"><span>, </span><span>string</span> + <var><span>iconURL</span></var></span><span class="null"><span>, </span><span>string</span> + <var><span>pageURL</span></var></span>)</div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p>Creates an extension panel.</p> + + <!-- PARAMETERS --> + <h4>Parameters</h4> + <dl> + <div> + <div> + <dt> + <var>title</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>Title that is displayed under the extension icon in the toolbar.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>iconURL</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>An URL of the toolbar icon.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>pageURL</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>An URL of the page that represents this panel.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- RETURNS --> + <h4>Returns</h4> + <dl> + <div> + <div> + <dt> + <var style="display: none; ">paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span> + <a href="experimental.webInspector.panels.html#type-ExtensionPanel">ExtensionPanel</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A panel that was created.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- CALLBACK --> + <div style="display: none; "> + <div> + <h4>Callback function</h4> + <p> + The callback <em>parameter</em> should specify a function + that looks like this: + </p> + <p> + If you specify the <em>callback</em> parameter, it should + specify a function that looks like this: + </p> + + <!-- Note: intentionally longer 80 columns --> + <pre>function(<span>Type param1, Type param2</span>) <span class="subdued">{...}</span>;</pre> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + </div> + + <!-- MIN_VERSION --> + <p style="display: none; "> + This function was added in version <b><span></span></b>. + If you require this function, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </p> + </div> <!-- /description --> + + </div> <!-- /apiItem --> + + </div> <!-- /apiGroup --> + + <!-- EVENTS --> + <div id="eventsTemplate" class="apiGroup" style="display: none; "> + <a></a> + <h3>Events</h3> + <!-- iterates over all events --> + <div class="apiItem"> + <a></a> + <h4>event name</h4> + + <div class="summary"> + <!-- Note: intentionally longer 80 columns --> + <span class="subdued">chrome.bookmarks</span><span>onEvent</span><span class="subdued">.addListener</span>(function(<span>Type param1, Type param2</span>) <span class="subdued">{...}</span>); + </div> + + <div class="description"> + <p class="todo">Undocumented.</p> + <p> + A description from the json schema def of the event goes here. + </p> + + <!-- PARAMETERS --> + <div> + <h4>Parameters</h4> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + </div> <!-- /decription --> + + </div> <!-- /apiItem --> + + </div> <!-- /apiGroup --> + + <!-- TYPES --> + <div class="apiGroup"> + <a name="types"></a> + <h3 id="types">Types</h3> + + <!-- iterates over all types --> + <div class="apiItem"> + <a name="type-PanelWithSidebars"></a> + <h4>PanelWithSidebars</h4> + + <div> + <dt> + <var style="display: none; ">paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>Panel</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A panel within Web Inspector UI that has sidebars.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd> + <div class="apiGroup"> + <a name="global-PanelWithSidebars-methods"></a> + <h3>Methods of PanelWithSidebars</h3> + + <!-- iterates over all functions --> + <div class="apiItem"> + <a name="method-PanelWithSidebars-createSidebarPane"></a> <!-- method-anchor --> + <h4>createSidebarPane</h4> + + <div class="summary"><span style="display: none; ">ExtensionPanel</span> + <!-- Note: intentionally longer 80 columns --> + <span>panelWithSidebars.createSidebarPane</span>(<span class="null"><span style="display: none; ">, </span><span>string</span> + <var><span>title</span></var></span><span class="null"><span>, </span><span>string</span> + <var><span>url</span></var></span><span class="null"><span>, </span><span>function</span> + <var><span>callback</span></var></span>)</div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p>Creates a pane within panel's sidebar.</p> + + <!-- PARAMETERS --> + <h4>Parameters</h4> + <dl> + <div> + <div> + <dt> + <var>title</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A text that is displayed in sidebar caption.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>url</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>An URL of the page that represents the sidebar.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>callback</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>function</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A callback invoked when sidebar is created</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- RETURNS --> + <h4 style="display: none; ">Returns</h4> + <dl> + <div style="display: none; "> + <div> + <dt> + <var style="display: none; ">paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span> + <a href="experimental.webInspector.panels.html#type-ExtensionPanel">ExtensionPanel</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A panel that was created.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- CALLBACK --> + <div style=""> + <div> + <h4>Callback function</h4> + <p> + The callback <em>parameter</em> should specify a function + that looks like this: + </p> + <p style="display: none; "> + If you specify the <em>callback</em> parameter, it should + specify a function that looks like this: + </p> + + <!-- Note: intentionally longer 80 columns --> + <pre>function(<span>ExtensionSidebarPane result</span>) <span class="subdued">{...}</span>;</pre> + <dl> + <div> + <div> + <dt> + <var>result</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span> + <a href="experimental.webInspector.panels.html#type-ExtensionSidebarPane">ExtensionSidebarPane</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>An ExtensionSidebarPane object for created sidebar pane</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + </div> + </div> + + <!-- MIN_VERSION --> + <p style="display: none; "> + This function was added in version <b><span></span></b>. + If you require this function, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </p> + </div> <!-- /description --> + + </div><div class="apiItem"> + <a name="method-PanelWithSidebars-createWatchExpressionSidebarPane"></a> <!-- method-anchor --> + <h4>createWatchExpressionSidebarPane</h4> + + <div class="summary"><span style="display: none; ">ExtensionPanel</span> + <!-- Note: intentionally longer 80 columns --> + <span>panelWithSidebars.createWatchExpressionSidebarPane</span>(<span class="null"><span style="display: none; ">, </span><span>string</span> + <var><span>title</span></var></span><span class="null"><span>, </span><span>function</span> + <var><span>callback</span></var></span>)</div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p>Creates a pane with an object property tree (similar to a watch sidebar pane).</p> + + <!-- PARAMETERS --> + <h4>Parameters</h4> + <dl> + <div> + <div> + <dt> + <var>title</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A text that is displayed in sidebar caption.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>callback</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>function</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A callback invoked when sidebar is created</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- RETURNS --> + <h4 style="display: none; ">Returns</h4> + <dl> + <div style="display: none; "> + <div> + <dt> + <var style="display: none; ">paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span> + <a href="experimental.webInspector.panels.html#type-ExtensionPanel">ExtensionPanel</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A panel that was created.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- CALLBACK --> + <div style=""> + <div> + <h4>Callback function</h4> + <p> + The callback <em>parameter</em> should specify a function + that looks like this: + </p> + <p style="display: none; "> + If you specify the <em>callback</em> parameter, it should + specify a function that looks like this: + </p> + + <!-- Note: intentionally longer 80 columns --> + <pre>function(<span>WatchExpressionSidebarPane result</span>) <span class="subdued">{...}</span>;</pre> + <dl> + <div> + <div> + <dt> + <var>result</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span> + <a href="experimental.webInspector.panels.html#type-WatchExpressionSidebarPane">WatchExpressionSidebarPane</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A WatchExpressionSidebarPane object for created sidebar pane</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + </div> + </div> + + <!-- MIN_VERSION --> + <p style="display: none; "> + This function was added in version <b><span></span></b>. + If you require this function, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </p> + </div> <!-- /description --> + + </div> <!-- /apiItem --> + + </div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + + </div><div class="apiItem"> + <a name="type-ElementsPanel"></a> + <h4>ElementsPanel</h4> + + <div> + <dt> + <var style="display: none; ">paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>PanelWithSidebars</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>Represents Elements panel</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div class="apiGroup" style=""> + <a name="global-ElementsPanel-events"></a> + <h3>Events of ElementsPanel</h3> + <!-- iterates over all events --> + <div class="apiItem"> + <a name="event-ElementsPanel-onSelectionChanged"></a> + <h4>onSelectionChanged</h4> + + <div class="summary"> + <!-- Note: intentionally longer 80 columns --> + <span class="subdued">elementsPanel.</span><span>onSelectionChanged</span><span class="subdued">.addListener</span>(function(<span></span>) <span class="subdued">{...}</span>); + </div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p>Fired when an objects is selected in the panel.</p> + + <!-- PARAMETERS --> + <div style="display: none; "> + <h4>Parameters</h4> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + </div> <!-- /decription --> + + </div> <!-- /apiItem --> + + </div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + + </div><div class="apiItem"> + <a name="type-ExtensionPanel"></a> + <h4>ExtensionPanel</h4> + + <div> + <dt> + <var style="display: none; ">paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>Panel</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>Represents a panel created by extension</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div class="apiGroup" style=""> + <a name="global-ExtensionPanel-events"></a> + <h3>Events of ExtensionPanel</h3> + <!-- iterates over all events --> + <div class="apiItem"> + <a name="event-ExtensionPanel-onSearch"></a> + <h4>onSearch</h4> + + <div class="summary"> + <!-- Note: intentionally longer 80 columns --> + <span class="subdued">extensionPanel.</span><span>onSearch</span><span class="subdued">.addListener</span>(function(<span>string action, string queryString</span>) <span class="subdued">{...}</span>); + </div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p>Fired upon a search action (start of a new search, search result navigation or search being canceled).</p> + + <!-- PARAMETERS --> + <div> + <h4>Parameters</h4> + <dl> + <div> + <div> + <dt> + <var>action</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>Type of search action being performed.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>queryString</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>Query string (only for 'performSearch')</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + </div> + </div> <!-- /decription --> + + </div> <!-- /apiItem --> + + </div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + + </div><div class="apiItem"> + <a name="type-ExtensionSidebarPane"></a> + <h4>ExtensionSidebarPane</h4> + + <div> + <dt> + <var style="display: none; ">paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>object</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A sidebar created by the extension.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd> + <div class="apiGroup"> + <a name="global-ExtensionSidebarPane-methods"></a> + <h3>Methods of ExtensionSidebarPane</h3> + + <!-- iterates over all functions --> + <div class="apiItem"> + <a name="method-ExtensionSidebarPane-setHeight"></a> <!-- method-anchor --> + <h4>setHeight</h4> + + <div class="summary"><span style="display: none; ">ExtensionPanel</span> + <!-- Note: intentionally longer 80 columns --> + <span>extensionSidebarPane.setHeight</span>(<span class="null"><span style="display: none; ">, </span><span>string</span> + <var><span>height</span></var></span>)</div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p>Sets the height of the sidebar.</p> + + <!-- PARAMETERS --> + <h4>Parameters</h4> + <dl> + <div> + <div> + <dt> + <var>height</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A CSS-like size specification, e.g. '10px' or '12pt'</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- RETURNS --> + <h4 style="display: none; ">Returns</h4> + <dl> + <div style="display: none; "> + <div> + <dt> + <var style="display: none; ">paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span> + <a href="experimental.webInspector.panels.html#type-ExtensionPanel">ExtensionPanel</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A panel that was created.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- CALLBACK --> + <div style="display: none; "> + <div> + <h4>Callback function</h4> + <p> + The callback <em>parameter</em> should specify a function + that looks like this: + </p> + <p> + If you specify the <em>callback</em> parameter, it should + specify a function that looks like this: + </p> + + <!-- Note: intentionally longer 80 columns --> + <pre>function(<span>Type param1, Type param2</span>) <span class="subdued">{...}</span>;</pre> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + </div> + + <!-- MIN_VERSION --> + <p style="display: none; "> + This function was added in version <b><span></span></b>. + If you require this function, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </p> + </div> <!-- /description --> + + </div> <!-- /apiItem --> + + </div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + + </div><div class="apiItem"> + <a name="type-WatchExpressionSidebarPane"></a> + <h4>WatchExpressionSidebarPane</h4> + + <div> + <dt> + <var style="display: none; ">paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>object</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A sidebar created by the extension.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd> + <div class="apiGroup"> + <a name="global-WatchExpressionSidebarPane-methods"></a> + <h3>Methods of WatchExpressionSidebarPane</h3> + + <!-- iterates over all functions --> + <div class="apiItem"> + <a name="method-WatchExpressionSidebarPane-setExpression"></a> <!-- method-anchor --> + <h4>setExpression</h4> + + <div class="summary"><span style="display: none; ">ExtensionPanel</span> + <!-- Note: intentionally longer 80 columns --> + <span>watchExpressionSidebarPane.setExpression</span>(<span class="null"><span style="display: none; ">, </span><span>string</span> + <var><span>expression</span></var></span><span class="optional"><span>, </span><span>string</span> + <var><span>rootTitle</span></var></span>)</div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p>Sets an expression that is evaluated within the inspected page. The result is displayed in the sidebar pane.</p> + + <!-- PARAMETERS --> + <h4>Parameters</h4> + <dl> + <div> + <div> + <dt> + <var>expression</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>An expression to be evaluated in context of the inspected page. JavaScript objects and DOM nodes are displayed in an expandable tree similar to the console/watch.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>rootTitle</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>An optional title for the root of the expression tree.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- RETURNS --> + <h4 style="display: none; ">Returns</h4> + <dl> + <div style="display: none; "> + <div> + <dt> + <var style="display: none; ">paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span> + <a href="experimental.webInspector.panels.html#type-ExtensionPanel">ExtensionPanel</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A panel that was created.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- CALLBACK --> + <div style="display: none; "> + <div> + <h4>Callback function</h4> + <p> + The callback <em>parameter</em> should specify a function + that looks like this: + </p> + <p> + If you specify the <em>callback</em> parameter, it should + specify a function that looks like this: + </p> + + <!-- Note: intentionally longer 80 columns --> + <pre>function(<span>Type param1, Type param2</span>) <span class="subdued">{...}</span>;</pre> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + </div> + + <!-- MIN_VERSION --> + <p style="display: none; "> + This function was added in version <b><span></span></b>. + If you require this function, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </p> + </div> <!-- /description --> + + </div><div class="apiItem"> + <a name="method-WatchExpressionSidebarPane-setHeight"></a> <!-- method-anchor --> + <h4>setHeight</h4> + + <div class="summary"><span style="display: none; ">ExtensionPanel</span> + <!-- Note: intentionally longer 80 columns --> + <span>watchExpressionSidebarPane.setHeight</span>(<span class="null"><span style="display: none; ">, </span><span>string</span> + <var><span>height</span></var></span>)</div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p>Sets the height of the sidebar.</p> + + <!-- PARAMETERS --> + <h4>Parameters</h4> + <dl> + <div> + <div> + <dt> + <var>height</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A CSS-like size specification, e.g. '10px' or '12pt'</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- RETURNS --> + <h4 style="display: none; ">Returns</h4> + <dl> + <div style="display: none; "> + <div> + <dt> + <var style="display: none; ">paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span> + <a href="experimental.webInspector.panels.html#type-ExtensionPanel">ExtensionPanel</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A panel that was created.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- CALLBACK --> + <div style="display: none; "> + <div> + <h4>Callback function</h4> + <p> + The callback <em>parameter</em> should specify a function + that looks like this: + </p> + <p> + If you specify the <em>callback</em> parameter, it should + specify a function that looks like this: + </p> + + <!-- Note: intentionally longer 80 columns --> + <pre>function(<span>Type param1, Type param2</span>) <span class="subdued">{...}</span>;</pre> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + </div> + + <!-- MIN_VERSION --> + <p style="display: none; "> + This function was added in version <b><span></span></b>. + If you require this function, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </p> + </div> <!-- /description --> + + </div><div class="apiItem"> + <a name="method-WatchExpressionSidebarPane-setObject"></a> <!-- method-anchor --> + <h4>setObject</h4> + + <div class="summary"><span style="display: none; ">ExtensionPanel</span> + <!-- Note: intentionally longer 80 columns --> + <span>watchExpressionSidebarPane.setObject</span>(<span class="null"><span style="display: none; ">, </span><span>string</span> + <var><span>jsonObject</span></var></span><span class="optional"><span>, </span><span>string</span> + <var><span>rootTitle</span></var></span>)</div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p>Sets a JSON-compliant object to be displayed in the sidebar pane.</p> + + <!-- PARAMETERS --> + <h4>Parameters</h4> + <dl> + <div> + <div> + <dt> + <var>jsonObject</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>An object to be displayed in context of the inspected page. Evaluated in the context of the caller (API client).</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>rootTitle</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>An optional title for the root of the expression tree.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- RETURNS --> + <h4 style="display: none; ">Returns</h4> + <dl> + <div style="display: none; "> + <div> + <dt> + <var style="display: none; ">paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span> + <a href="experimental.webInspector.panels.html#type-ExtensionPanel">ExtensionPanel</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A panel that was created.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- CALLBACK --> + <div style="display: none; "> + <div> + <h4>Callback function</h4> + <p> + The callback <em>parameter</em> should specify a function + that looks like this: + </p> + <p> + If you specify the <em>callback</em> parameter, it should + specify a function that looks like this: + </p> + + <!-- Note: intentionally longer 80 columns --> + <pre>function(<span>Type param1, Type param2</span>) <span class="subdued">{...}</span>;</pre> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + </div> + + <!-- MIN_VERSION --> + <p style="display: none; "> + This function was added in version <b><span></span></b>. + If you require this function, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </p> + </div> <!-- /description --> + + </div> <!-- /apiItem --> + + </div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + + </div> <!-- /apiItem --> + + </div> <!-- /apiGroup --> + + </div> <!-- /apiPage --> + </div> <!-- /gc-pagecontent --> + </div> <!-- /g-section --> + </div> <!-- /codesiteContent --> + <div id="gc-footer" --=""> + <div class="text"> + <p> + Except as otherwise <a href="http://code.google.com/policies.html#restrictions">noted</a>, + the content of this page is licensed under the <a rel="license" href="http://creativecommons.org/licenses/by/3.0/">Creative Commons + Attribution 3.0 License</a>, and code samples are licensed under the + <a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>. + </p> + <p> + ©2011 Google + </p> + +<!-- begin analytics --> +<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script> +<script src="http://www.google-analytics.com/ga.js" type="text/javascript"></script> + +<script type="text/javascript"> + // chrome doc tracking + try { + var engdocs = _gat._getTracker("YT-10763712-2"); + engdocs._trackPageview(); + } catch(err) {} + + // code.google.com site-wide tracking + try { + _uacct="UA-18071-1"; + _uanchor=1; + _uff=0; + urchinTracker(); + } + catch(e) {/* urchinTracker not available. */} +</script> +<!-- end analytics --> + </div> + </div> <!-- /gc-footer --> + </div> <!-- /gc-container --> +</body></html> diff --git a/chrome/common/extensions/docs/experimental.webInspector.resources.html b/chrome/common/extensions/docs/experimental.webInspector.resources.html new file mode 100644 index 0000000..60036e2 --- /dev/null +++ b/chrome/common/extensions/docs/experimental.webInspector.resources.html @@ -0,0 +1,1036 @@ +<!DOCTYPE html><!-- This page is a placeholder for generated extensions api doc. Note: + 1) The <head> information in this page is significant, should be uniform + across api docs and should be edited only with knowledge of the + templating mechanism. + 3) All <body>.innerHTML is genereated as an rendering step. If viewed in a + browser, it will be re-generated from the template, json schema and + authored overview content. + 4) The <body>.innerHTML is also generated by an offline step so that this + page may easily be indexed by search engines. +--><html xmlns="http://www.w3.org/1999/xhtml"><head> + <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> + <link href="css/ApiRefStyles.css" rel="stylesheet" type="text/css"> + <link href="css/print.css" rel="stylesheet" type="text/css" media="print"> + <script type="text/javascript" src="../../../third_party/jstemplate/jstemplate_compiled.js"> + </script> + <script type="text/javascript" src="js/api_page_generator.js"></script> + <script type="text/javascript" src="js/bootstrap.js"></script> + <script type="text/javascript" src="js/sidebar.js"></script> + <title>experimental.webInspector.resources - Google Chrome Extensions - Google Code</title></head> + <body> <div id="gc-container" class="labs"> + <div id="devModeWarning"> + You are viewing extension docs in chrome via the 'file:' scheme: are you expecting to see local changes when you refresh? You'll need run chrome with --allow-file-access-from-files. + </div> + <!-- SUBTEMPLATES: DO NOT MOVE FROM THIS LOCATION --> + <!-- In particular, sub-templates that recurse, must be used by allowing + jstemplate to make a copy of the template in this section which + are not operated on by way of the jsskip="true" --> + <div style="display:none"> + + <!-- VALUE --> + <div id="valueTemplate"> + <dt> + <var>paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum">enumerated</span> + <span id="typeTemplate"> + <span> + <a> Type</a> + </span> + <span> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo"> + Undocumented. + </dd> + <dd> + Description of this parameter from the json schema. + </dd> + <dd> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd> + <div></div> + </dd> + + </div> <!-- /VALUE --> + + <div id="functionParametersTemplate"> + <h5>Parameters</h5> + <dl> + <div> + <div> + </div> + </div> + </dl> + </div> + </div> <!-- /SUBTEMPLATES --> + + <a id="top"></a> + <div id="skipto"> + <a href="#gc-pagecontent">Skip to page content</a> + <a href="#gc-toc">Skip to main navigation</a> + </div> + <!-- API HEADER --> + <table id="header" width="100%" cellspacing="0" border="0"> + <tbody><tr> + <td valign="middle"><a href="http://code.google.com/"><img src="images/code_labs_logo.gif" height="43" width="161" alt="Google Code Labs" style="border:0; margin:0;"></a></td> + <td valign="middle" width="100%" style="padding-left:0.6em;"> + <form action="http://www.google.com/cse" id="cse" style="margin-top:0.5em"> + <div id="gsc-search-box"> + <input type="hidden" name="cx" value="002967670403910741006:61_cvzfqtno"> + <input type="hidden" name="ie" value="UTF-8"> + <input type="text" name="q" value="" size="55"> + <input class="gsc-search-button" type="submit" name="sa" value="Search"> + <br> + <span class="greytext">e.g. "page action" or "tabs"</span> + </div> + </form> + + <script type="text/javascript" src="http://www.google.com/jsapi"></script> + <script type="text/javascript">google.load("elements", "1", {packages: "transliteration"});</script> + <script type="text/javascript" src="http://www.google.com/coop/cse/t13n?form=cse&t13n_langs=en"></script> + <script type="text/javascript" src="http://www.google.com/coop/cse/brand?form=cse&lang=en"></script> + </td> + </tr> + </tbody></table> + + <div id="codesiteContent" class=""> + + <a id="gc-topnav-anchor"></a> + <div id="gc-topnav"> + <h1>Google Chrome Extensions (<a href="http://code.google.com/labs/">Labs</a>)</h1> + <ul id="home" class="gc-topnav-tabs"> + <li id="home_link"> + <a href="index.html" title="Google Chrome Extensions home page">Home</a> + </li> + <li id="docs_link"> + <a href="docs.html" title="Official Google Chrome Extensions documentation">Docs</a> + </li> + <li id="faq_link"> + <a href="faq.html" title="Answers to frequently asked questions about Google Chrome Extensions">FAQ</a> + </li> + <li id="samples_link"> + <a href="samples.html" title="Sample extensions (with source code)">Samples</a> + </li> + <li id="group_link"> + <a href="http://groups.google.com/a/chromium.org/group/chromium-extensions" title="Google Chrome Extensions developer forum">Group</a> + </li> + </ul> + </div> <!-- end gc-topnav --> + + <div class="g-section g-tpl-170"> + <!-- SIDENAV --> + <div class="g-unit g-first" id="gc-toc"> + <ul> + <li><a href="getstarted.html">Getting Started</a></li> + <li><a href="overview.html">Overview</a></li> + <li><a href="whats_new.html">What's New?</a></li> + <li><h2><a href="devguide.html">Developer's Guide</a></h2> + <ul> + <li>Browser UI + <ul> + <li><a href="browserAction.html">Browser Actions</a></li> + <li><a href="contextMenus.html">Context Menus</a></li> + <li><a href="notifications.html">Desktop Notifications</a></li> + <li><a href="omnibox.html">Omnibox</a></li> + <li><a href="options.html">Options Pages</a></li> + <li><a href="override.html">Override Pages</a></li> + <li><a href="pageAction.html">Page Actions</a></li> + </ul> + </li> + <li>Browser Interaction + <ul> + <li><a href="bookmarks.html">Bookmarks</a></li> + <li><a href="cookies.html">Cookies</a></li> + <li><a href="events.html">Events</a></li> + <li><a href="history.html">History</a></li> + <li><a href="management.html">Management</a></li> + <li><a href="tabs.html">Tabs</a></li> + <li><a href="windows.html">Windows</a></li> + </ul> + </li> + <li>Implementation + <ul> + <li><a href="a11y.html">Accessibility</a></li> + <li><a href="background_pages.html">Background Pages</a></li> + <li><a href="content_scripts.html">Content Scripts</a></li> + <li><a href="xhr.html">Cross-Origin XHR</a></li> + <li><a href="idle.html">Idle</a></li> + <li><a href="i18n.html">Internationalization</a></li> + <li><a href="messaging.html">Message Passing</a></li> + <li><a href="npapi.html">NPAPI Plugins</a></li> + </ul> + </li> + <li>Finishing + <ul> + <li><a href="hosting.html">Hosting</a></li> + <li><a href="external_extensions.html">Other Deployment Options</a></li> + </ul> + </li> + </ul> + </li> + <li><h2><a href="apps.html">Packaged Apps</a></h2></li> + <li><h2><a href="tutorials.html">Tutorials</a></h2> + <ul> + <li><a href="tut_debugging.html">Debugging</a></li> + <li><a href="tut_analytics.html">Google Analytics</a></li> + <li><a href="tut_oauth.html">OAuth</a></li> + </ul> + </li> + <li><h2>Reference</h2> + <ul> + <li>Formats + <ul> + <li><a href="manifest.html">Manifest Files</a></li> + <li><a href="match_patterns.html">Match Patterns</a></li> + </ul> + </li> + <li><a href="permission_warnings.html">Permission Warnings</a></li> + <li><a href="api_index.html">chrome.* APIs</a></li> + <li><a href="api_other.html">Other APIs</a></li> + </ul> + </li> + <li><h2><a href="samples.html">Samples</a></h2></li> + <div class="line"> </div> + <li><h2>More</h2> + <ul> + <li><a href="http://code.google.com/chrome/webstore/docs/index.html">Chrome Web Store</a></li> + <li><a href="http://code.google.com/chrome/apps/docs/developers_guide.html">Hosted Apps</a></li> + <li><a href="themes.html">Themes</a></li> + </ul> + </li> + </ul> + </div> + <script> + initToggles(); + </script> + + <div class="g-unit" id="gc-pagecontent"> + <div id="pageTitle"> + <h1 class="page_title">experimental.webInspector.resources</h1> + </div> + <!-- TABLE OF CONTENTS --> + <div id="toc"> + <h2>Contents</h2> + <ol> + <li style="display: none; "> + <a>h2Name</a> + <ol> + <li> + <a>h3Name</a> + </li> + </ol> + </li> + <li> + <a href="#apiReference">API reference: experimental.webInspector.resources</a> + <ol> + <li style="display: none; "> + <a href="#properties">Properties</a> + <ol> + <li> + <a href="#property-anchor">propertyName</a> + </li> + </ol> + </li> + <li> + <a href="#global-methods">Methods</a> + <ol> + <li> + <a href="#method-getHAR">getHAR</a> + </li> + </ol> + </li> + <li> + <a href="#global-events">Events</a> + <ol> + <li> + <a href="#event-onFinished">onFinished</a> + </li> + </ol> + </li> + <li> + <a href="#types">Types</a> + <ol> + <li> + <a href="#type-Resource">Resource</a> + </li> + </ol> + </li> + </ol> + </li> + </ol> + </div> + <!-- /TABLE OF CONTENTS --> + + <!-- Standard content lead-in for experimental API pages --> + <p id="classSummary" style="display: none; "> + For information on how to use experimental APIs, see the <a href="experimental.html">chrome.experimental.* APIs</a> page. + </p> + + <!-- STATIC CONTENT PLACEHOLDER --> + <div id="static"></div> + + <!-- API PAGE --> + <div class="apiPage"> + <a name="apiReference"></a> + <h2>API reference: experimental.webInspector.resources</h2> + + <!-- PROPERTIES --> + <div class="apiGroup" style="display: none; "> + <a name="properties"></a> + <h3 id="properties">Properties</h3> + + <div> + <a></a> + <h4>getLastError</h4> + <div class="summary"> + <!-- Note: intentionally longer 80 columns --> + <span>chrome.extension</span><span>lastError</span> + </div> + <div> + </div> + </div> + + </div> <!-- /apiGroup --> + + <!-- METHODS --> + <div id="methodsTemplate" class="apiGroup"> + <a name="global-methods"></a> + <h3>Methods</h3> + + <!-- iterates over all functions --> + <div class="apiItem"> + <a name="method-getHAR"></a> <!-- method-anchor --> + <h4>getHAR</h4> + + <div class="summary"><span style="display: none; ">void</span> + <!-- Note: intentionally longer 80 columns --> + <span>experimental.webInspector.resources.getHAR</span>(<span class="null"><span style="display: none; ">, </span><span>function</span> + <var><span>callback</span></var></span>)</div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p>Returns HAR archive that contains all known resource objects.</p> + + <!-- PARAMETERS --> + <h4>Parameters</h4> + <dl> + <div> + <div> + <dt> + <var>callback</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>function</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A function that is called upon request completion.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- RETURNS --> + <h4 style="display: none; ">Returns</h4> + <dl> + <div style="display: none; "> + <div> + </div> + </div> + </dl> + + <!-- CALLBACK --> + <div> + <div> + <h4>Callback function</h4> + <p> + The callback <em>parameter</em> should specify a function + that looks like this: + </p> + <p style="display: none; "> + If you specify the <em>callback</em> parameter, it should + specify a function that looks like this: + </p> + + <!-- Note: intentionally longer 80 columns --> + <pre>function(<span>object har</span>) <span class="subdued">{...}</span>;</pre> + <dl> + <div> + <div> + <dt> + <var>har</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>object</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A HAR archieve. See HAR specification for details.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + </div> + </div> + + <!-- MIN_VERSION --> + <p style="display: none; "> + This function was added in version <b><span></span></b>. + If you require this function, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </p> + </div> <!-- /description --> + + </div> <!-- /apiItem --> + + </div> <!-- /apiGroup --> + + <!-- EVENTS --> + <div id="eventsTemplate" class="apiGroup"> + <a name="global-events"></a> + <h3>Events</h3> + <!-- iterates over all events --> + <div class="apiItem"> + <a name="event-onFinished"></a> + <h4>onFinished</h4> + + <div class="summary"> + <!-- Note: intentionally longer 80 columns --> + <span class="subdued">experimental.webInspector.resources.</span><span>onFinished</span><span class="subdued">.addListener</span>(function(<span>Resource resource</span>) <span class="subdued">{...}</span>); + </div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p>Fired when a resource request is finished and all resource data are available.</p> + + <!-- PARAMETERS --> + <div> + <h4>Parameters</h4> + <dl> + <div> + <div> + <dt> + <var>resource</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span> + <a href="experimental.webInspector.resources.html#type-Resource">Resource</a> + </span> + <span style="display: none; "> + <span> + array of <span><span></span></span> + </span> + <span>paramType</span> + <span></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo"> + Undocumented. + </dd> + <dd style="display: none; "> + Description of this parameter from the json schema. + </dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + </div> + </div> <!-- /decription --> + + </div> <!-- /apiItem --> + + </div> <!-- /apiGroup --> + + <!-- TYPES --> + <div class="apiGroup"> + <a name="types"></a> + <h3 id="types">Types</h3> + + <!-- iterates over all types --> + <div class="apiItem"> + <a name="type-Resource"></a> + <h4>Resource</h4> + + <div> + <dt> + <var style="display: none; ">paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>object</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>Represents a resource (document, script, image etc). See HAR Specification for reference.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd> + <div class="apiGroup"> + <a name="global-Resource-methods"></a> + <h3>Methods of Resource</h3> + + <!-- iterates over all functions --> + <div class="apiItem"> + <a name="method-Resource-getContent"></a> <!-- method-anchor --> + <h4>getContent</h4> + + <div class="summary"><span style="display: none; ">void</span> + <!-- Note: intentionally longer 80 columns --> + <span>resource.getContent</span>(<span class="null"><span style="display: none; ">, </span><span>function</span> + <var><span>callback</span></var></span>)</div> + + <div class="description"> + <p class="todo" style="display: none; ">Undocumented.</p> + <p>Returns resource content.</p> + + <!-- PARAMETERS --> + <h4>Parameters</h4> + <dl> + <div> + <div> + <dt> + <var>callback</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>function</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A function that is called upon request completion.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + + <!-- RETURNS --> + <h4 style="display: none; ">Returns</h4> + <dl> + <div style="display: none; "> + <div> + </div> + </div> + </dl> + + <!-- CALLBACK --> + <div> + <div> + <h4>Callback function</h4> + <p> + The callback <em>parameter</em> should specify a function + that looks like this: + </p> + <p style="display: none; "> + If you specify the <em>callback</em> parameter, it should + specify a function that looks like this: + </p> + + <!-- Note: intentionally longer 80 columns --> + <pre>function(<span>string content, string encoding</span>) <span class="subdued">{...}</span>;</pre> + <dl> + <div> + <div> + <dt> + <var>content</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>Resource content (potentially encoded).</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>encoding</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>Empty if content is not encoded, encoding name otherwise. Currently, only base64 supported.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + </div> + </div> + + <!-- MIN_VERSION --> + <p style="display: none; "> + This function was added in version <b><span></span></b>. + If you require this function, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </p> + </div> <!-- /description --> + + </div> <!-- /apiItem --> + + </div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + + </div> <!-- /apiItem --> + + </div> <!-- /apiGroup --> + + </div> <!-- /apiPage --> + </div> <!-- /gc-pagecontent --> + </div> <!-- /g-section --> + </div> <!-- /codesiteContent --> + <div id="gc-footer" --=""> + <div class="text"> + <p> + Except as otherwise <a href="http://code.google.com/policies.html#restrictions">noted</a>, + the content of this page is licensed under the <a rel="license" href="http://creativecommons.org/licenses/by/3.0/">Creative Commons + Attribution 3.0 License</a>, and code samples are licensed under the + <a rel="license" href="http://code.google.com/google_bsd_license.html">BSD License</a>. + </p> + <p> + ©2011 Google + </p> + +<!-- begin analytics --> +<script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script> +<script src="http://www.google-analytics.com/ga.js" type="text/javascript"></script> + +<script type="text/javascript"> + // chrome doc tracking + try { + var engdocs = _gat._getTracker("YT-10763712-2"); + engdocs._trackPageview(); + } catch(err) {} + + // code.google.com site-wide tracking + try { + _uacct="UA-18071-1"; + _uanchor=1; + _uff=0; + urchinTracker(); + } + catch(e) {/* urchinTracker not available. */} +</script> +<!-- end analytics --> + </div> + </div> <!-- /gc-footer --> + </div> <!-- /gc-container --> +</body></html> diff --git a/chrome/common/extensions/docs/experimental.webNavigation.html b/chrome/common/extensions/docs/experimental.webNavigation.html index 52a04af..166af51 100644 --- a/chrome/common/extensions/docs/experimental.webNavigation.html +++ b/chrome/common/extensions/docs/experimental.webNavigation.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -267,7 +277,7 @@ </ol> </li> <li style="display: none; "> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -275,7 +285,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a href="#global-events">Events</a> <ol> <li> <a href="#event-onBeforeNavigate">onBeforeNavigate</a> @@ -338,8 +348,8 @@ </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods" style="display: none; "> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup" style="display: none; "> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -414,10 +424,9 @@ </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a name="global-events"></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a name="event-onBeforeNavigate"></a> @@ -433,10 +442,11 @@ <p>Fires when a navigation is about to occur.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>details</var> <em> @@ -534,6 +544,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -594,6 +614,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -652,6 +682,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -710,6 +750,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -768,6 +818,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -778,15 +838,25 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -803,10 +873,11 @@ <p>Fires when a new window, or a new tab in an existing window, is about to be created to host a navigation.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>details</var> <em> @@ -904,6 +975,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -962,6 +1043,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1020,6 +1111,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1078,6 +1179,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1088,15 +1199,25 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -1113,10 +1234,11 @@ <p>Fires when a navigation is committed. The document (and the resources it refers to, such as images and subframes) might still be downloading, but at least part of the document has been received from the server and the browser has decided to switch to the new document.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>details</var> <em> @@ -1214,6 +1336,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1274,6 +1406,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1332,6 +1474,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1390,6 +1542,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1448,6 +1610,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1506,6 +1678,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1516,15 +1698,25 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -1541,10 +1733,11 @@ <p>Fires when a document, including the resources it refers to, is completely loaded and initialized.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>details</var> <em> @@ -1642,6 +1835,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1702,6 +1905,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1760,6 +1973,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1818,6 +2041,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1828,15 +2061,25 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -1853,10 +2096,11 @@ <p>Fires when the page's DOM is fully constructed, but the referenced resources may not finish loading.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>details</var> <em> @@ -1954,6 +2198,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2014,6 +2268,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2072,6 +2336,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2130,6 +2404,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2140,15 +2424,25 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -2165,10 +2459,11 @@ <p>Fires when an error occurs.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>details</var> <em> @@ -2266,6 +2561,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2326,6 +2631,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2384,6 +2699,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2442,6 +2767,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2500,6 +2835,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2510,15 +2855,25 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/experimental.webRequest.html b/chrome/common/extensions/docs/experimental.webRequest.html index 71769af..0e11c39 100644 --- a/chrome/common/extensions/docs/experimental.webRequest.html +++ b/chrome/common/extensions/docs/experimental.webRequest.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -266,16 +276,16 @@ </li> </ol> </li> - <li style="display: none; "> - <a href="#methods">Methods</a> + <li> + <a href="#global-methods">Methods</a> <ol> - <li> + <li style="display: none; "> <a href="#method-anchor">methodName</a> </li> </ol> </li> <li> - <a href="#events">Events</a> + <a href="#global-events">Events</a> <ol> <li> <a href="#event-onBeforeRedirect">onBeforeRedirect</a> @@ -292,11 +302,11 @@ </li> </ol> </li> - <li style="display: none; "> + <li> <a href="#types">Types</a> <ol> <li> - <a href="#id-anchor">id</a> + <a href="#type-RequestFilter">RequestFilter</a> </li> </ol> </li> @@ -338,12 +348,12 @@ </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods" style="display: none; "> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a name="global-methods"></a> <h3>Methods</h3> <!-- iterates over all functions --> - <div class="apiItem"> + <div class="apiItem" style="display: none; "> <a></a> <!-- method-anchor --> <h4>method name</h4> @@ -414,10 +424,9 @@ </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a name="global-events"></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a name="event-onBeforeRedirect"></a> @@ -433,10 +442,11 @@ <p>Fires when a server initiated redirect is about to occur.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>details</var> <em> @@ -534,6 +544,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -592,6 +612,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -650,6 +680,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -708,6 +748,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -766,6 +816,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -776,15 +836,25 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -801,10 +871,11 @@ <p>Fires when a request is about to occur.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>details</var> <em> @@ -902,6 +973,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -962,6 +1043,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1020,6 +1111,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1078,6 +1179,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1136,6 +1247,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1194,6 +1315,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1204,15 +1335,25 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -1229,10 +1370,11 @@ <p>Fires when a request is completed.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>details</var> <em> @@ -1330,6 +1472,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1388,6 +1540,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1446,6 +1608,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1504,6 +1676,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1514,15 +1696,25 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -1539,10 +1731,11 @@ <p>Fires when an error occurs.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>details</var> <em> @@ -1640,6 +1833,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1698,6 +1901,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1756,6 +1969,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1814,6 +2037,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1824,15 +2057,25 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -1849,10 +2092,11 @@ <p>Fires when the status line and response headers are received after a request is sent to the server.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>details</var> <em> @@ -1950,6 +2194,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2010,6 +2264,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2068,6 +2332,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2126,6 +2400,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2136,15 +2420,25 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -2161,10 +2455,11 @@ <p>Fires when a request is sent to the server.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>details</var> <em> @@ -2262,6 +2557,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2322,6 +2627,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2380,6 +2695,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2438,6 +2763,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2448,15 +2783,25 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> @@ -2464,17 +2809,377 @@ </div> <!-- /apiGroup --> <!-- TYPES --> - <div class="apiGroup" style="display: none; "> + <div class="apiGroup"> <a name="types"></a> <h3 id="types">Types</h3> <!-- iterates over all types --> <div class="apiItem"> - <a></a> - <h4>type name</h4> + <a name="type-RequestFilter"></a> + <h4>RequestFilter</h4> + + <div> + <dt> + <var style="display: none; ">paramName</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional" style="display: none; ">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>object</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>An object describing filters to apply to webRequest events.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd> + <dl> + <div> + <div> + <dt> + <var>urls</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span> + array of <span><span> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span style="display: none; "></span> + </span> + </span></span> + </span> + <span style="display: none; ">paramType</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A list of URLs or URL patterns. Requests that cannot match any of the URLs will be filtered out.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>types</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span> + array of <span><span> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>string</span> + <span>["main_frame", "sub_frame", "stylesheet", "script", "image", "object", "other"]</span> + </span> + </span></span> + </span> + <span style="display: none; ">paramType</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo" style="display: none; "> + Undocumented. + </dd> + <dd>A list of request types. Requests that cannot match any of the types will be filtered out.</dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>tabId</var> + <em> + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>integer</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo"> + Undocumented. + </dd> + <dd style="display: none; "> + Description of this parameter from the json schema. + </dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> <div> + <div> + </div> </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div><div> + <div> + <dt> + <var>windowId</var> + <em> + + <!-- TYPE --> + <div style="display:inline"> + ( + <span class="optional">optional</span> + <span class="enum" style="display: none; ">enumerated</span> + <span id="typeTemplate"> + <span style="display: none; "> + <a> Type</a> + </span> + <span> + <span style="display: none; "> + array of <span><span></span></span> + </span> + <span>integer</span> + <span style="display: none; "></span> + </span> + </span> + ) + </div> + + </em> + </dt> + <dd class="todo"> + Undocumented. + </dd> + <dd style="display: none; "> + Description of this parameter from the json schema. + </dd> + <dd style="display: none; "> + This parameter was added in version + <b><span></span></b>. + You must omit this parameter in earlier versions, + and you may omit it in any version. If you require this + parameter, the manifest key + <a href="manifest.html#minimum_chrome_version">minimum_chrome_version</a> + can ensure that your extension won't be run in an earlier browser version. + </dd> + + <!-- OBJECT PROPERTIES --> + <dd style="display: none; "> + <dl> + <div> + <div> + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> + </div> + </dl> + </dd> + + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- FUNCTION PARAMETERS --> + <dd style="display: none; "> + <div></div> + </dd> + + </div> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/extension.html b/chrome/common/extensions/docs/extension.html index a0e11fd..9e99f0e 100644 --- a/chrome/common/extensions/docs/extension.html +++ b/chrome/common/extensions/docs/extension.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -269,7 +279,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a href="#global-methods">Methods</a> <ol> <li> <a href="#method-connect">connect</a> @@ -291,7 +301,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a href="#global-events">Events</a> <ol> <li> <a href="#event-onConnect">onConnect</a> @@ -490,6 +500,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -500,6 +520,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -609,6 +639,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -619,6 +659,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -630,8 +680,8 @@ For details, see </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a name="global-methods"></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -704,6 +754,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -809,6 +869,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -819,6 +889,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -883,6 +963,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -936,10 +1026,10 @@ For details, see <div class="description"> <p class="todo" style="display: none; ">Undocumented.</p> - <p>Returns the JavaScript 'window' object for the background page running inside the current extension. Returns null if the extension has no backround page.</p> + <p>Returns the JavaScript 'window' object for the background page running inside the current extension. Returns null if the extension has no background page.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> + <h4 style="display: none; ">Parameters</h4> <dl> <div style="display: none; "> <div> @@ -1004,6 +1094,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1246,6 +1346,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1310,6 +1420,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1467,6 +1587,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1525,6 +1655,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1535,6 +1675,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1610,6 +1760,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1722,6 +1882,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1782,6 +1952,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1842,6 +2022,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div> @@ -1899,6 +2089,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1991,6 +2191,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2081,6 +2291,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2137,10 +2357,9 @@ For details, see </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a name="global-events"></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a name="event-onConnect"></a> @@ -2156,10 +2375,11 @@ For details, see <p>Fired when a connection is made from either an extension process or a content script.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>port</var> <em> @@ -2212,15 +2432,25 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -2237,10 +2467,11 @@ For details, see <p>Fired when a connection is made from another extension.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>port</var> <em> @@ -2293,15 +2524,25 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -2318,10 +2559,11 @@ For details, see <p>Fired when a request is sent from either an extension process or a content script.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>request</var> <em> @@ -2372,14 +2614,24 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div><div> - <div> + </div><div> + <div> <dt> <var>sender</var> <em> @@ -2432,14 +2684,24 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div><div> - <div> + </div><div> + <div> <dt> <var>sendResponse</var> <em> @@ -2490,15 +2752,25 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -2515,10 +2787,11 @@ For details, see <p>Fired when a request is sent from another extension.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>request</var> <em> @@ -2569,14 +2842,24 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div><div> - <div> + </div><div> + <div> <dt> <var>sender</var> <em> @@ -2629,14 +2912,24 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div><div> - <div> + </div><div> + <div> <dt> <var>sendResponse</var> <em> @@ -2687,15 +2980,25 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> @@ -2808,6 +3111,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2866,6 +3179,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2876,6 +3199,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2985,6 +3318,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3045,6 +3388,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3105,6 +3458,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3165,6 +3528,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3175,6 +3548,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3284,6 +3667,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3344,6 +3737,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3404,6 +3807,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3464,6 +3877,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3522,6 +3945,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3532,6 +3965,16 @@ For details, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> diff --git a/chrome/common/extensions/docs/external_extensions.html b/chrome/common/extensions/docs/external_extensions.html index 0ee2ed5..c566a62 100644 --- a/chrome/common/extensions/docs/external_extensions.html +++ b/chrome/common/extensions/docs/external_extensions.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -295,7 +305,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -303,7 +313,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -627,8 +637,8 @@ through the UI, and then uninstalling it. </p> </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -703,10 +713,9 @@ through the UI, and then uninstalling it. </p> </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -724,14 +733,15 @@ through the UI, and then uninstalling it. </p> </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/faq.html b/chrome/common/extensions/docs/faq.html index 0e17982..245567f 100644 --- a/chrome/common/extensions/docs/faq.html +++ b/chrome/common/extensions/docs/faq.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -267,7 +277,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -275,7 +285,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -731,8 +741,8 @@ win,stable,#.#.###.#,#.#.###.#</pre> </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -807,10 +817,9 @@ win,stable,#.#.###.#,#.#.###.#</pre> </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -828,14 +837,15 @@ win,stable,#.#.###.#,#.#.###.#</pre> </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/getstarted.html b/chrome/common/extensions/docs/getstarted.html index 3adba4e..e45e814 100644 --- a/chrome/common/extensions/docs/getstarted.html +++ b/chrome/common/extensions/docs/getstarted.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -281,7 +291,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -289,7 +299,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -376,7 +386,6 @@ to the toolbar of Google Chrome. by clicking the wrench icon <img src="images/toolsmenu.gif" width="29" height="29" alt="" style="margin-top:0"> and choosing <b>Tools > Extensions</b>. - (On Mac, use <b>Window > Extensions</b>.) </li> <li> @@ -515,8 +524,8 @@ If you don't feel like reading, try these: </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -591,10 +600,9 @@ If you don't feel like reading, try these: </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -612,14 +620,15 @@ If you don't feel like reading, try these: </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/history.html b/chrome/common/extensions/docs/history.html index e6be466..9b80f25 100644 --- a/chrome/common/extensions/docs/history.html +++ b/chrome/common/extensions/docs/history.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -281,7 +291,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a href="#global-methods">Methods</a> <ol> <li> <a href="#method-addUrl">addUrl</a> @@ -299,7 +309,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a href="#global-events">Events</a> <ol> <li> <a href="#event-onVisitRemoved">onVisitRemoved</a> @@ -512,8 +522,8 @@ For other examples and for help in viewing the source code, see </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a name="global-methods"></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -632,6 +642,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -642,6 +662,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -763,6 +793,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -930,6 +970,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -988,6 +1038,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -998,6 +1058,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1058,6 +1128,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1224,6 +1304,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1234,6 +1324,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1401,6 +1501,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1411,6 +1521,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1471,6 +1591,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1570,6 +1700,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1706,6 +1846,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1764,6 +1914,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1822,6 +1982,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1880,6 +2050,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1890,6 +2070,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1950,6 +2140,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2049,6 +2249,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2074,10 +2284,9 @@ For other examples and for help in viewing the source code, see </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a name="global-events"></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a name="event-onVisitRemoved"></a> @@ -2093,10 +2302,11 @@ For other examples and for help in viewing the source code, see <p>Fired when one or more URLs are removed from the history service. When all visits have been removed the URL is purged from history.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>removed</var> <em> @@ -2194,6 +2404,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2265,6 +2485,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2275,15 +2505,25 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -2300,10 +2540,11 @@ For other examples and for help in viewing the source code, see <p>Fired when a URL is visited, providing the HistoryItem data for that URL.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>result</var> <em> @@ -2356,15 +2597,25 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> @@ -2477,6 +2728,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2535,6 +2796,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2593,6 +2864,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2651,6 +2932,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2709,6 +3000,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2767,6 +3068,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2777,6 +3088,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2884,6 +3205,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2942,6 +3273,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3000,6 +3341,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3058,6 +3409,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3116,6 +3477,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3126,6 +3497,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> diff --git a/chrome/common/extensions/docs/hosting.html b/chrome/common/extensions/docs/hosting.html index 0a688fb..7210219 100644 --- a/chrome/common/extensions/docs/hosting.html +++ b/chrome/common/extensions/docs/hosting.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -267,7 +277,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -275,7 +285,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -419,8 +429,8 @@ or try hosting the <code>.crx</code> file at another server. </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -495,10 +505,9 @@ or try hosting the <code>.crx</code> file at another server. </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -516,14 +525,15 @@ or try hosting the <code>.crx</code> file at another server. </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/i18n-messages.html b/chrome/common/extensions/docs/i18n-messages.html index 3c85b6b..8dee90c 100644 --- a/chrome/common/extensions/docs/i18n-messages.html +++ b/chrome/common/extensions/docs/i18n-messages.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -287,7 +297,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -295,7 +305,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -673,8 +683,8 @@ because its value is obvious from the "content" field. </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -749,10 +759,9 @@ because its value is obvious from the "content" field. </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -770,14 +779,15 @@ because its value is obvious from the "content" field. </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/i18n.html b/chrome/common/extensions/docs/i18n.html index d5e3bb9..fc3351f 100644 --- a/chrome/common/extensions/docs/i18n.html +++ b/chrome/common/extensions/docs/i18n.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -294,7 +304,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a href="#global-methods">Methods</a> <ol> <li> <a href="#method-getAcceptLanguages">getAcceptLanguages</a> @@ -304,7 +314,7 @@ </ol> </li> <li style="display: none; "> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -586,7 +596,7 @@ Here's an example of using <code>@@bidi_*</code> messages in a CSS file: </p> <pre>body { - <b>dir: __MSG_@@bidi_dir__;</b> + <b>direction: __MSG_@@bidi_dir__;</b> } div#header { @@ -926,8 +936,8 @@ For details on calling <code>getAcceptLanguages()</code>, see the </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a name="global-methods"></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -1001,6 +1011,16 @@ For details on calling <code>getAcceptLanguages()</code>, see the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1098,6 +1118,16 @@ For details on calling <code>getAcceptLanguages()</code>, see the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1187,6 +1217,16 @@ For details on calling <code>getAcceptLanguages()</code>, see the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1245,6 +1285,16 @@ For details on calling <code>getAcceptLanguages()</code>, see the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1309,6 +1359,16 @@ For details on calling <code>getAcceptLanguages()</code>, see the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1356,10 +1416,9 @@ For details on calling <code>getAcceptLanguages()</code>, see the </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup" style="display: none; "> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup" style="display: none; "> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -1377,14 +1436,15 @@ For details on calling <code>getAcceptLanguages()</code>, see the </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/idle.html b/chrome/common/extensions/docs/idle.html index 1ab1b64..6ad4097 100644 --- a/chrome/common/extensions/docs/idle.html +++ b/chrome/common/extensions/docs/idle.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -267,7 +277,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a href="#global-methods">Methods</a> <ol> <li> <a href="#method-queryState">queryState</a> @@ -275,7 +285,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a href="#global-events">Events</a> <ol> <li> <a href="#event-onStateChanged">onStateChanged</a> @@ -346,8 +356,8 @@ For example: </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a name="global-methods"></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -420,6 +430,16 @@ For example: </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -480,6 +500,16 @@ For example: </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -568,6 +598,16 @@ For example: </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -593,10 +633,9 @@ For example: </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a name="global-events"></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a name="event-onStateChanged"></a> @@ -612,10 +651,11 @@ For example: <p>Fired when the browser changes to an active state. Currently only reports the transition from idle to active.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>newState</var> <em> @@ -668,15 +708,25 @@ For example: </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/index.html b/chrome/common/extensions/docs/index.html index 54cd32f..3888f88 100644 --- a/chrome/common/extensions/docs/index.html +++ b/chrome/common/extensions/docs/index.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -267,7 +277,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -275,7 +285,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -441,8 +451,8 @@ For more information, see the </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -517,10 +527,9 @@ For more information, see the </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -538,14 +547,15 @@ For more information, see the </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/js/api_page_generator.js b/chrome/common/extensions/docs/js/api_page_generator.js index 856d11a..185aafc 100644 --- a/chrome/common/extensions/docs/js/api_page_generator.js +++ b/chrome/common/extensions/docs/js/api_page_generator.js @@ -14,8 +14,13 @@ * */ +var USE_DEVTOOLS_SCHEMA = /\.webInspector\.[^/]*\.html/.test(location.href); var API_TEMPLATE = "template/api_template.html"; -var SCHEMA = "../api/extension_api.json"; +var WEBKIT_PATH = "../../../../third_party/WebKit"; +var SCHEMA = USE_DEVTOOLS_SCHEMA ? + WEBKIT_PATH + "/Source/WebCore/inspector/front-end/ExtensionAPISchema.json" + : "../api/extension_api.json"; +var API_MODULE_PREFIX = USE_DEVTOOLS_SCHEMA ? "" : "chrome."; var SAMPLES = "samples.json"; var REQUEST_TIMEOUT = 2000; @@ -184,7 +189,7 @@ function renderTemplate() { } // This page is an api page. Setup types and apiDefinition. module = mod; - apiModuleName = "chrome." + module.namespace; + apiModuleName = API_MODULE_PREFIX + module.namespace; pageData.apiDefinition = module; } @@ -433,11 +438,15 @@ function getPageTitle() { } function getModuleName() { - return "chrome." + module.namespace; + return API_MODULE_PREFIX + module.namespace; } -function getFullyQualifiedFunctionName(func) { - return getModuleName() + "." + func.name; +function getFullyQualifiedFunctionName(scope, func) { + return (getObjectName(scope) || getModuleName()) + "." + func.name; +} + +function getObjectName(typeName) { + return typeName.charAt(0).toLowerCase() + typeName.substring(1); } function isExperimentalAPIPage() { @@ -454,6 +463,10 @@ function getCallbackParameters(parameters) { return parameters[parameters.length - 1]; } +function getAnchorName(type, name, scope) { + return type + "-" + (scope ? scope + "-" : "") + name; +} + function shouldExpandObject(object) { return (object.type == "object" && object.properties); } @@ -491,6 +504,8 @@ function getTypeName(schema) { } function getSignatureString(parameters) { + if (!parameters) + return ""; var retval = []; parameters.forEach(function(param, i) { retval.push(getTypeName(param) + " " + param.name); diff --git a/chrome/common/extensions/docs/management.html b/chrome/common/extensions/docs/management.html index 149e27e..59e4e08 100644 --- a/chrome/common/extensions/docs/management.html +++ b/chrome/common/extensions/docs/management.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -267,7 +277,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a href="#global-methods">Methods</a> <ol> <li> <a href="#method-get">get</a> @@ -283,7 +293,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a href="#global-events">Events</a> <ol> <li> <a href="#event-onDisabled">onDisabled</a> @@ -367,8 +377,8 @@ For example:</p> </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a name="global-methods"></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -441,6 +451,16 @@ For example:</p> </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -501,6 +521,16 @@ For example:</p> </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -589,6 +619,16 @@ For example:</p> </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -679,6 +719,16 @@ For example:</p> </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -778,6 +828,16 @@ For example:</p> </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -867,6 +927,16 @@ For example:</p> </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -927,6 +997,16 @@ For example:</p> </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1048,6 +1128,16 @@ For example:</p> </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1106,6 +1196,16 @@ For example:</p> </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1166,6 +1266,16 @@ For example:</p> </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1286,6 +1396,16 @@ For example:</p> </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1346,6 +1466,16 @@ For example:</p> </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1402,10 +1532,9 @@ For example:</p> </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a name="global-events"></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a name="event-onDisabled"></a> @@ -1421,10 +1550,11 @@ For example:</p> <p>Fired when an app or extension has been disabled</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>info</var> <em> @@ -1477,15 +1607,25 @@ For example:</p> </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -1502,10 +1642,11 @@ For example:</p> <p>Fired when an app or extension has been enabled.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>info</var> <em> @@ -1558,15 +1699,25 @@ For example:</p> </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -1583,10 +1734,11 @@ For example:</p> <p>Fired when an app or extension has been installed.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>info</var> <em> @@ -1639,15 +1791,25 @@ For example:</p> </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -1664,10 +1826,11 @@ For example:</p> <p>Fired when an app or extension has been uninstalled.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>id</var> <em> @@ -1718,15 +1881,25 @@ For example:</p> </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> @@ -1839,6 +2012,16 @@ For example:</p> </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1897,6 +2080,16 @@ For example:</p> </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1907,6 +2100,16 @@ For example:</p> </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2014,6 +2217,16 @@ For example:</p> </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2072,6 +2285,16 @@ For example:</p> </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2130,6 +2353,16 @@ For example:</p> </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2188,6 +2421,16 @@ For example:</p> </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2246,6 +2489,16 @@ For example:</p> </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2304,6 +2557,16 @@ For example:</p> </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2362,6 +2625,16 @@ For example:</p> </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2420,6 +2693,16 @@ For example:</p> </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2489,6 +2772,16 @@ For example:</p> </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2558,6 +2851,16 @@ For example:</p> </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2627,6 +2930,16 @@ For example:</p> </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2637,6 +2950,16 @@ For example:</p> </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> diff --git a/chrome/common/extensions/docs/manifest.html b/chrome/common/extensions/docs/manifest.html index 7f477f9..73f24dc 100644 --- a/chrome/common/extensions/docs/manifest.html +++ b/chrome/common/extensions/docs/manifest.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -294,7 +304,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -302,7 +312,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -808,8 +818,8 @@ For more information, see </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -884,10 +894,9 @@ For more information, see </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -905,14 +914,15 @@ For more information, see </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/match_patterns.html b/chrome/common/extensions/docs/match_patterns.html index ddbc56b..46b1bb0 100644 --- a/chrome/common/extensions/docs/match_patterns.html +++ b/chrome/common/extensions/docs/match_patterns.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -267,7 +277,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -275,7 +285,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -561,8 +571,8 @@ Here are some examples of <em>invalid</em> pattern matches: </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -637,10 +647,9 @@ Here are some examples of <em>invalid</em> pattern matches: </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -658,14 +667,15 @@ Here are some examples of <em>invalid</em> pattern matches: </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/messaging.html b/chrome/common/extensions/docs/messaging.html index 19e683d..0fec286 100644 --- a/chrome/common/extensions/docs/messaging.html +++ b/chrome/common/extensions/docs/messaging.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -295,7 +305,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -303,7 +313,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -627,8 +637,8 @@ For more examples and for help in viewing the source code, see </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -703,10 +713,9 @@ For more examples and for help in viewing the source code, see </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -724,14 +733,15 @@ For more examples and for help in viewing the source code, see </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/notifications.html b/chrome/common/extensions/docs/notifications.html index 82c5e07..c2d1556 100644 --- a/chrome/common/extensions/docs/notifications.html +++ b/chrome/common/extensions/docs/notifications.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -288,7 +298,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -296,7 +306,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -468,8 +478,8 @@ see the <a href="http://dev.chromium.org/developers/design-documents/desktop-not </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -544,10 +554,9 @@ see the <a href="http://dev.chromium.org/developers/design-documents/desktop-not </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -565,14 +574,15 @@ see the <a href="http://dev.chromium.org/developers/design-documents/desktop-not </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/npapi.html b/chrome/common/extensions/docs/npapi.html index 8aad2ea..ef2d0b3 100644 --- a/chrome/common/extensions/docs/npapi.html +++ b/chrome/common/extensions/docs/npapi.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -267,7 +277,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -275,7 +285,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -426,8 +436,8 @@ avoid making your NPAPI plugin public whenever possible. </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -502,10 +512,9 @@ avoid making your NPAPI plugin public whenever possible. </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -523,14 +532,15 @@ avoid making your NPAPI plugin public whenever possible. </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/omnibox.html b/chrome/common/extensions/docs/omnibox.html index 6f7afa7..5da9484 100644 --- a/chrome/common/extensions/docs/omnibox.html +++ b/chrome/common/extensions/docs/omnibox.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -274,7 +284,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a href="#global-methods">Methods</a> <ol> <li style="display: none; "> <a href="#method-anchor">methodName</a> @@ -284,7 +294,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a href="#global-events">Events</a> <ol> <li> <a href="#event-onInputCancelled">onInputCancelled</a> @@ -418,8 +428,8 @@ You can find samples of this API on the </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a name="global-methods"></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -602,6 +612,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -612,6 +632,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -668,10 +698,9 @@ You can find samples of this API on the </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a name="global-events"></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a name="event-onInputCancelled"></a> @@ -687,14 +716,15 @@ You can find samples of this API on the <p>User has ended the keyword input session without accepting the input.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div style="display: none; "> + <div style="display: none; "> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -711,10 +741,11 @@ You can find samples of this API on the <p>User has changed what is typed into the omnibox.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>text</var> <em> @@ -767,14 +798,24 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div><div> - <div> + </div><div> + <div> <dt> <var>suggest</var> <em> @@ -825,6 +866,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div> @@ -893,6 +944,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -905,9 +966,9 @@ You can find samples of this API on the </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -924,10 +985,11 @@ You can find samples of this API on the <p>User has accepted what is typed into the omnibox.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>text</var> <em> @@ -980,15 +1042,25 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -1005,14 +1077,15 @@ You can find samples of this API on the <p>User has started a keyword input session by typing the extension's keyword. This is guaranteed to be sent exactly once per input session, and before any onInputChanged events.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div style="display: none; "> + <div style="display: none; "> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> @@ -1125,6 +1198,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1183,6 +1266,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1193,6 +1286,16 @@ You can find samples of this API on the </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> diff --git a/chrome/common/extensions/docs/options.html b/chrome/common/extensions/docs/options.html index 982032f..2dd3cd8 100644 --- a/chrome/common/extensions/docs/options.html +++ b/chrome/common/extensions/docs/options.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -281,7 +291,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -289,7 +299,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -417,8 +427,8 @@ Favorite Color: </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -493,10 +503,9 @@ Favorite Color: </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -514,14 +523,15 @@ Favorite Color: </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/override.html b/chrome/common/extensions/docs/override.html index bfa7e7d..f2aa1dd 100644 --- a/chrome/common/extensions/docs/override.html +++ b/chrome/common/extensions/docs/override.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -281,7 +291,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -289,7 +299,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -388,6 +398,11 @@ specify "spanning" mode for the <a href="manifest.html#incognito">incognito</a> manifest property. </p> +<p class="note"> +<b>Note:</b> +You cannot override the New Tab page in incognito windows. +</p> + <p> The following screenshots show the default New Tab page next to a custom New Tab page. @@ -522,8 +537,8 @@ For other examples and for help in viewing the source code, see </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -598,10 +613,9 @@ For other examples and for help in viewing the source code, see </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -619,14 +633,15 @@ For other examples and for help in viewing the source code, see </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/overview.html b/chrome/common/extensions/docs/overview.html index 49e7d8c..89a18cb 100644 --- a/chrome/common/extensions/docs/overview.html +++ b/chrome/common/extensions/docs/overview.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -308,7 +318,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -316,7 +326,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -796,8 +806,8 @@ Here are some ideas for where to go next: </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -872,10 +882,9 @@ Here are some ideas for where to go next: </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -893,14 +902,15 @@ Here are some ideas for where to go next: </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/packaging.html b/chrome/common/extensions/docs/packaging.html index ccfa542..cf63a8b 100644 --- a/chrome/common/extensions/docs/packaging.html +++ b/chrome/common/extensions/docs/packaging.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -288,7 +298,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -296,7 +306,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -508,8 +518,8 @@ to create <code>.crx</code> files, see <a href="crx.html">CRX package format</a> </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -584,10 +594,9 @@ to create <code>.crx</code> files, see <a href="crx.html">CRX package format</a> </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -605,14 +614,15 @@ to create <code>.crx</code> files, see <a href="crx.html">CRX package format</a> </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/pageAction.html b/chrome/common/extensions/docs/pageAction.html index f6d0ac4..6dc7c5c 100644 --- a/chrome/common/extensions/docs/pageAction.html +++ b/chrome/common/extensions/docs/pageAction.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -288,7 +298,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a href="#global-methods">Methods</a> <ol> <li> <a href="#method-hide">hide</a> @@ -304,7 +314,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a href="#global-events">Events</a> <ol> <li> <a href="#event-onClicked">onClicked</a> @@ -378,7 +388,7 @@ like this: "name": "My extension", ... <b>"page_action": { - "default_icon": "icons/foo.png", <em>// <b>required</b></em> + "default_icon": "icons/foo.png", <em>// optional</em> "default_title": "Do action", <em>// optional; shown in tooltip</em> "default_popup": "popup.html" <em>// optional</em> }</b>, @@ -389,8 +399,8 @@ like this: <p> Like browser actions, -page actions have an icon and -can also have a tooltip and popup; +page actions can have an icon, +a tooltip, and popup; they can't have badges, however. In addition, page actions can appear and disappear. You can find information about icons, tooltips, and popups @@ -427,15 +437,6 @@ follow these guidelines:</p> for features that make sense for most pages. Use <a href="browserAction.html">browser actions</a> instead. - </li><li><b>Do</b> use icons - that are slightly lighter weight - than <a href="browserAction.html#icon">browser action icons</a>. - Most icons that Chrome displays - in the location bar - are smaller than 19 pixels. - If the edge pixels are used, - they are usually only used - for a faint shadow. </li><li><b>Don't</b> constantly animate your icon. That's just annoying. </li></ul> @@ -478,8 +479,8 @@ For other examples and for help in viewing the source code, see </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a name="global-methods"></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -551,6 +552,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -717,6 +728,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -775,6 +796,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -833,6 +864,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -891,6 +932,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -901,6 +952,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1067,6 +1128,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1125,6 +1196,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1135,6 +1216,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1301,6 +1392,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1359,6 +1460,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1369,6 +1480,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1488,6 +1609,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1544,10 +1675,9 @@ For other examples and for help in viewing the source code, see </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a name="global-events"></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a name="event-onClicked"></a> @@ -1563,10 +1693,11 @@ For other examples and for help in viewing the source code, see <p>Fired when a page action icon is clicked. This event will not fire if the page action has a popup.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>tab</var> <em> @@ -1619,15 +1750,25 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/permission_warnings.html b/chrome/common/extensions/docs/permission_warnings.html index eb062e3..66b96dd 100644 --- a/chrome/common/extensions/docs/permission_warnings.html +++ b/chrome/common/extensions/docs/permission_warnings.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -288,7 +298,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -296,7 +306,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -423,7 +433,7 @@ brings up the following warning: <p> It can be surprising when adding a permission such as "tabs" results in the seemingly unrelated warning -that the extension can access your browsing history. +that the extension can access your browsing activity. The reason for the warning is that although the <code>chrome.tabs</code> API might be used only to open new tabs, @@ -488,22 +498,30 @@ that trigger them. </td> <td> <!-- HasEffectiveBrowsingHistoryPermission --> - "history" or "tabs" permission + "history" permission </td> <td> <p> - The "tabs" permission is required by the - <a href="tabs.html"><code>chrome.tabs</code></a> and - <a href="windows.html"><code>chrome.windows</code></a> modules. - </p> - <p> The "history" permission is required by <a href="history.html"><code>chrome.history</code></a>. </p> + </td> +</tr> + +<tr> + <td style="font-weight:bold"> + <!-- IDS_EXTENSION_PROMPT_WARNING_TABS --> + Your tabs and browsing activity + </td> + <td> + <!-- HasEffectiveBrowsingHistoryPermission --> + "tabs" permission + </td> + <td> <p> - Adding "tabs" to an existing extension - that already has "history", or vice versa, - doesn't cause a warning when the extension is autoupdated. + The "tabs" permission is required by the + <a href="tabs.html"><code>chrome.tabs</code></a> and + <a href="windows.html"><code>chrome.windows</code></a> modules. </p> </td> </tr> @@ -684,8 +702,8 @@ by clicking the <b>chrome://extensions</b> page's </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -760,10 +778,9 @@ by clicking the <b>chrome://extensions</b> page's </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -781,14 +798,15 @@ by clicking the <b>chrome://extensions</b> page's </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/samples.html b/chrome/common/extensions/docs/samples.html index f51faa5..3e19c14 100644 --- a/chrome/common/extensions/docs/samples.html +++ b/chrome/common/extensions/docs/samples.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -267,7 +277,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -275,7 +285,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -303,7 +313,7 @@ <!-- STATIC CONTENT PLACEHOLDER --> <div id="static"><link rel="stylesheet" href="css/samples.css"> -<script>var search_data = {"0262260daf0c8f7b28feff2ef23b05e7abf9d1e0":"A BROWSER ACTION WHICH CHANGES ITS ICON WHEN CLICKED. BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETICON","ea2894c41cb8e80a4433a3e6c5772dadce9be90d":"A BROWSER ACTION WITH A POPUP THAT CHANGES THE PAGE COLOR. BROWSER_ACTION POPUP TABS CHROME.TABS.EXECUTESCRIPT","ede3c47b7757245be42ec33fd5ca63df4b490066":"A BROWSER ACTION WITH NO ICON THAT MAKES THE PAGE RED BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.TABS.EXECUTESCRIPT","fbf0aa1a09a15ff8cc4fc7de4fd176d6c663d07a":"ACCEPTLANGUAGE RETURNS ACCEPT LANGUAGES OF THE BROWSER BROWSER_ACTION POPUP CHROME.I18N.GETACCEPTLANGUAGES CHROME.I18N.GETMESSAGE","9a6e4ec46997fb92b324974afa08a3d007e2537f":"ANIMATED PAGE ACTION THIS EXTENSION ADDS AN ANIMATED BROWSER ACTION TO THE TOOLBAR. BACKGROUND_PAGE PAGE_ACTION TABS CHROME.PAGEACTION.HIDE CHROME.PAGEACTION.ONCLICKED CHROME.PAGEACTION.SETICON CHROME.PAGEACTION.SETTITLE CHROME.PAGEACTION.SHOW CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONSELECTIONCHANGED","a1f7cf79dd555b04fa8d603247a040e644996293":"APP LAUNCHER BROWSER_ACTION MANAGEMENT CHROME.EXTENSION.GETURL CHROME.MANAGEMENT.GET CHROME.MANAGEMENT.GETALL CHROME.MANAGEMENT.LAUNCHAPP CHROME.TABS.CREATE","9747e3d6a3eab39bc7c17f11a80573c62d44c7e5":"BLANK NEW TAB PAGE CHROME_URL_OVERRIDES","903e7277139e1e6caec123d3319cab295d8d1b3a":"CHROME SOUNDS ENJOY A MORE MAGICAL AND IMMERSIVE EXPERIENCE WHEN BROWSING THE WEB USING THE POWER OF SOUND. BACKGROUND_PAGE BOOKMARKS OPTIONS_PAGE TABS CHROME.BOOKMARKS.ONCREATED CHROME.BOOKMARKS.ONMOVED CHROME.BOOKMARKS.ONREMOVED CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST CHROME.TABS.GET CHROME.TABS.ONATTACHED CHROME.TABS.ONCREATED CHROME.TABS.ONDETACHED CHROME.TABS.ONMOVED CHROME.TABS.ONREMOVED CHROME.TABS.ONSELECTIONCHANGED CHROME.TABS.ONUPDATED CHROME.WINDOWS.ONCREATED CHROME.WINDOWS.ONFOCUSCHANGED CHROME.WINDOWS.ONREMOVED","0e790e035a4a00b6f1def5ef9a7d7be1bce95ab5":"CHROMIUM BUILDBOT MONITOR DISPLAYS THE STATUS OF THE CHROMIUM BUILDBOT IN THE TOOLBAR. CLICK TO SEE MORE DETAILED STATUS IN A POPUP. BACKGROUND_PAGE BROWSER_ACTION NOTIFICATIONS OPTIONS_PAGE POPUP CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.BROWSERACTION.SETTITLE CHROME.EXTENSION.GETURL","ac31228200b41a87982e386cc90d3a6eee4ad885":"CHROMIUM SEARCH ADD SUPPORT TO THE OMNIBOX TO SEARCH THE CHROMIUM SOURCE CODE. BACKGROUND_PAGE TABS CHROME.OMNIBOX.ONINPUTCANCELLED CHROME.OMNIBOX.ONINPUTCHANGED CHROME.OMNIBOX.ONINPUTENTERED CHROME.OMNIBOX.ONINPUTSTARTED CHROME.OMNIBOX.SETDEFAULTSUGGESTION CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.UPDATE","7d5d6cf195bc25480256618e360aa38c6e6fba82":"CLD DISPLAYS THE LANGUAGE OF A TAB BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.SETBADGETEXT CHROME.TABS.DETECTLANGUAGE CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONSELECTIONCHANGED CHROME.TABS.ONUPDATED","5d81304a17cf7ac2887484f730fbd2b01e51e166":"CONTEXT MENUS SAMPLE SHOWS SOME OF THE FEATURES OF THE CONTEXT MENUS API BACKGROUND_PAGE CONTEXTMENUS CHROME.CONTEXTMENUS.CREATE","4daa6becd0899a54776d9cf7f09613ed1a9f4d77":"COOKIE API TEST EXTENSION TESTING COOKIE API BACKGROUND_PAGE BROWSER_ACTION COOKIES TABS CHROME.BROWSERACTION.ONCLICKED CHROME.COOKIES.GET CHROME.COOKIES.GETALL CHROME.COOKIES.ONCHANGED CHROME.COOKIES.REMOVE CHROME.EXTENSION.GETURL CHROME.TABS.CREATE CHROME.TABS.UPDATE CHROME.WINDOWS.GET CHROME.WINDOWS.GETALL","6871d09f4a96bf9d4b6cc724d00e909cee0f3902":"CROSS-DOMAIN XMLHTTPREQUEST FROM A CONTENT SCRIPT DEMONSTRATES A METHOD TO MAKE A CROSS-DOMAIN XMLHTTPREQUEST FETCH FROM A CONTENT SCRIPT. THIS EXTENSION FETCHES THE CURRENT TRENDING TOPICS FROM TWITTER AND INSERTS THEM IN AN OVERLAY AT THE TOP OF GOOGLE NEWS. VISIT HTTP://NEWS.GOOGLE.COM TO TEST THIS EXTENSION. BACKGROUND_PAGE CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST","028eb5364924344029bcbe1d527f132fc72b34e5":"EMAIL THIS PAGE (BY GOOGLE) THIS EXTENSION ADDS AN EMAIL BUTTON TO THE TOOLBAR WHICH ALLOWS YOU TO EMAIL THE PAGE LINK USING YOUR DEFAULT MAIL CLIENT OR GMAIL. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE TABS CHROME.BROWSERACTION.ONCLICKED CHROME.EXTENSION.CONNECT CHROME.EXTENSION.ONCONNECT CHROME.TABS.CREATE CHROME.TABS.EXECUTESCRIPT CHROME.TABS.UPDATE","763a08e9b06595d785568a8d392b95a2f3700258":"EVENT TRACKING WITH GOOGLE ANALYTICS A SAMPLE EXTENSION WHICH USES GOOGLE ANALYTICS TO TRACK USAGE. BACKGROUND_PAGE BROWSER_ACTION POPUP","e3df888a89e35bdeb9c8bc8d03be5e1851b97c68":"EXTENSION DOCS SEARCH SEARCH THE CHROME EXTENSIONS DOCUMENTATION. TO USE, TYPE CRDOC PLUS A SEARCH TERM INTO THE OMNIBOX. BACKGROUND_PAGE TABS CHROME.OMNIBOX.ONINPUTCHANGED CHROME.OMNIBOX.ONINPUTENTERED CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.ONREMOVED CHROME.TABS.UPDATE","8b0dd31216235941bdd8eb33fda915ef5cf79a82":"GOOGLE CALENDAR CHECKER (BY GOOGLE) QUICKLY SEE THE TIME UNTIL YOUR NEXT MEETING FROM ANY OF YOUR CALENDARS. CLICK ON THE BUTTON TO BE TAKEN TO YOUR CALENDAR. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.BROWSERACTION.SETICON CHROME.BROWSERACTION.SETTITLE CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST CHROME.I18N.GETMESSAGE CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.ONUPDATED CHROME.TABS.UPDATE","4e35caa9742fb82dbd628892d23a781614f6eff6":"GOOGLE DOCUMENT LIST VIEWER DEMONSTRATES HOW TO USE OAUTH TO CONNECT THE GOOGLE DOCUMENTS LIST DATA API. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE POPUP TABS CHROME.BROWSERACTION.SETBADGETEXT CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.GETURL CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONUPDATED CHROME.TABS.REMOVE","bb57f7a0132cbeb36ad7e7bb0ab75c21704234ca":"GOOGLE MAIL CHECKER DISPLAYS THE NUMBER OF UNREAD MESSAGES IN YOUR GOOGLE MAIL INBOX. YOU CAN ALSO CLICK THE BUTTON TO OPEN YOUR INBOX. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.BROWSERACTION.SETICON CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.I18N.GETMESSAGE CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.ONUPDATED CHROME.TABS.UPDATE","1682e05ea9a1bde985123b04f6f8ac50a8a64033":"GOOGLE WAVE NOTIFIER FIND OUT WHEN YOU HAVE NEW WAVES AND PREVIEW THEM FAST. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE POPUP TABS CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.GETURL CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONUPDATED CHROME.TABS.REMOVE","14b9651fda4e57b2a5914ba73a779812201b750a":"HELLO WORLD THE FIRST EXTENSION THAT I MADE. BROWSER_ACTION POPUP","2020d72f2577f53caf8e94e3dbac0fb849ceaa4d":"IDLE - SIMPLE EXAMPLE DEMONSTRATES THE IDLE API BACKGROUND_PAGE BROWSER_ACTION IDLE CHROME.BROWSERACTION.ONCLICKED CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.IDLE.ONSTATECHANGED CHROME.IDLE.QUERYSTATE","0ea1588bd07b20338fc21f725de1542a5fdf9726":"IGOOGLE NEW TAB PAGE CHROME_URL_OVERRIDES","646325c25f572a1d15edc73d057f821d847a4fbe":"IMAGEINFO GET IMAGE INFO FOR IMAGES, INCLUDING EXIF DATA BACKGROUND_PAGE CONTEXTMENUS TABS CHROME.CONTEXTMENUS.CREATE CHROME.TABS.GET CHROME.TABS.GETCURRENT CHROME.WINDOWS.CREATE CHROME.WINDOWS.UPDATE","ec97ec20ca2f095d081e39f1565fc12af09ef067":"MAPPY FINDS ADDRESSES IN THE WEB PAGE YOURE ON AND POPS UP A MAP WINDOW. BACKGROUND_PAGE PAGE_ACTION POPUP TABS CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.ONREQUEST CHROME.PAGEACTION.HIDE CHROME.PAGEACTION.SETTITLE CHROME.PAGEACTION.SHOW CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONSELECTIONCHANGED CHROME.TABS.ONUPDATED CHROME.TABS.SENDREQUEST","b2f5f8a790e16f091a7e4e0a39b2d0a6d32e3a6d":"MERGE WINDOWS MERGES ALL OF THE BROWSERS WINDOWS INTO THE CURRENT WINDOW BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.TABS.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.MOVE CHROME.WINDOWS.GET CHROME.WINDOWS.GETALL CHROME.WINDOWS.GETCURRENT","51a83d2ba3a32e3ff1bdb624d4e18ccec4c4038e":"MESSAGE TIMER TIMES HOW LONG IT TAKES TO SEND A MESSAGE TO A CONTENT SCRIPT AND BACK. BROWSER_ACTION POPUP TABS CHROME.EXTENSION.ONCONNECT CHROME.EXTENSION.ONREQUEST CHROME.TABS.CONNECT CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.SENDREQUEST","4f6785ec4f937add6728615682dd37c9a42d9548":"MY BOOKMARKS A BROWSER ACTION WITH A POPUP DUMP OF ALL BOOKMARKS, INCLUDING SEARCH, ADD, EDIT AND DELETE. BOOKMARKS BROWSER_ACTION POPUP TABS CHROME.BOOKMARKS.CREATE CHROME.BOOKMARKS.GET CHROME.BOOKMARKS.GETTREE CHROME.BOOKMARKS.REMOVE CHROME.BOOKMARKS.UPDATE CHROME.TABS.CREATE","597015d3bcce3da693b02314afd607bec4f55291":"NEWS READER DISPLAYS THE FIRST 5 ITEMS FROM THE GOOGLE NEWS - TOP NEWS RSS FEED IN A POPUP. BROWSER_ACTION POPUP TABS CHROME.TABS.CREATE","6444e5c8ae112a6a433909c5e770669cd16e2e5f":"NEWS READER DISPLAYS THE FIRST 5 ITEMS FROM THE GOOGLE NEWS - TOP NEWS RSS FEED IN A POPUP. BROWSER_ACTION POPUP TABS CHROME.I18N.GETMESSAGE CHROME.TABS.CREATE","3aea027164cb9b732ba4a8c51cb93708891726ef":"NEWS READER (BY GOOGLE) DISPLAYS THE LATEST STORIES FROM GOOGLE NEWS IN A POPUP. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE POPUP TABS CHROME.EXTENSION.GETURL CHROME.I18N.GETMESSAGE CHROME.TABS.CREATE","f799e26ceef2367cf836f24bcb47df4398b0df58":"NOTIFICATION DEMO SHOWS OFF DESKTOP NOTIFICATIONS, WHICH ARE TOAST WINDOWS THAT POP UP ON THE DESKTOP. BACKGROUND_PAGE NOTIFICATIONS OPTIONS_PAGE TABS CHROME.TABS.CREATE","e787b322bddbc6289bb31b7d7550b1bf6456a80b":"OMNIBOX EXAMPLE TO USE, TYPE OMNIX PLUS A SEARCH TERM INTO THE OMNIBOX. BACKGROUND_PAGE CHROME.OMNIBOX.ONINPUTCHANGED CHROME.OMNIBOX.ONINPUTENTERED","8d0a50b57c26bb498be592e871001ffed91541b4":"PAGE ACTION BY CONTENT SHOWS A PAGE ACTION FOR HTML PAGES CONTAINING THE WORD SANDWICH BACKGROUND_PAGE PAGE_ACTION CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST CHROME.PAGEACTION.SHOW","80b86ccc6e8520660fa591caa565826f0ed1b12c":"PAGE ACTION BY URL SHOWS A PAGE ACTION FOR URLS WHICH HAVE THE LETTER G IN THEM. BACKGROUND_PAGE PAGE_ACTION TABS CHROME.PAGEACTION.SHOW CHROME.TABS.ONUPDATED","d74c3c18a1c1dd18b035149105a306f837c8823e":"PAGE BENCHMARKER CHROMIUM PAGE BENCHMARKER. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.BROWSERACTION.SETTITLE CHROME.EXTENSION.CONNECT CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.GETEXTENSIONTABS CHROME.EXTENSION.GETURL CHROME.EXTENSION.ONCONNECT CHROME.TABS.CREATE CHROME.TABS.EXECUTESCRIPT CHROME.TABS.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.GETSELECTED CHROME.TABS.REMOVE CHROME.TABS.UPDATE CHROME.WINDOWS.GET CHROME.WINDOWS.GETCURRENT","e6ae17ab4ccfd7e059c8c01f25760ca5d894c7fd":"PRINT THIS PAGE ADDS A PRINT BUTTON TO THE BROWSER. BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.TABS.UPDATE","beff6ecd9677dea0a7c648c5042165b48bb66f09":"PROCESS MONITOR ADDS A BROWSER ACTION THAT MONITORS RESOURCE USAGE OF ALL BROWSER PROCESSES. BROWSER_ACTION EXPERIMENTAL POPUP TABS CHROME.EXPERIMENTAL.PROCESSES.ONUPDATED","56a8d2ac24ca7bba78fd88ad57f43fc13c784497":"SAMPLE - OAUTH CONTACTS USES OAUTH TO CONNECT TO GOOGLES CONTACTS SERVICE AND DISPLAY A LIST OF YOUR CONTACTS. BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETICON CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.GETURL CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONUPDATED CHROME.TABS.REMOVE","38f6e1e17756ede38b1364c7114a738ca717dcbb":"SANDWICHBAR SHOWS AN INFOBAR ON PAGES WHICH CONTAIN THE WORD SANDWICH BACKGROUND_PAGE EXPERIMENTAL CHROME.EXPERIMENTAL.INFOBARS.SHOW CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST","fc89b35755483af30b66cd72cefa34a43a3e8312":"SHOW TABS IN PROCESS ADDS A BROWSER ACTION SHOWING WHICH TABS SHARE THE CURRENT TABS PROCESS. BROWSER_ACTION EXPERIMENTAL POPUP TABS CHROME.EXPERIMENTAL.PROCESSES.GETPROCESSIDFORTAB CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.UPDATE CHROME.WINDOWS.GET CHROME.WINDOWS.GETALL CHROME.WINDOWS.GETCURRENT CHROME.WINDOWS.UPDATE","230463f2d5c3d4d0ca13c230e1f00f2aae0a8a64":"TAB INSPECTOR UTILITY FOR WORKING WITH THE EXTENSION TABS API BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.EXTENSION.GETURL CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.GETSELECTED CHROME.TABS.MOVE CHROME.TABS.ONATTACHED CHROME.TABS.ONCREATED CHROME.TABS.ONDETACHED CHROME.TABS.ONMOVED CHROME.TABS.ONREMOVED CHROME.TABS.ONSELECTIONCHANGED CHROME.TABS.ONUPDATED CHROME.TABS.REMOVE CHROME.TABS.UPDATE CHROME.WINDOWS.CREATE CHROME.WINDOWS.GET CHROME.WINDOWS.GETALL CHROME.WINDOWS.GETCURRENT CHROME.WINDOWS.GETLASTFOCUSED CHROME.WINDOWS.ONCREATED CHROME.WINDOWS.ONFOCUSCHANGED CHROME.WINDOWS.ONREMOVED CHROME.WINDOWS.REMOVE CHROME.WINDOWS.UPDATE","e1697cacebad05218798bf3e8a0f724517f0e8c3":"TEST SCREENSHOT EXTENSION DEMONSTRATE SCREENSHOT FUNCTIONALITY IN THE CHROME.TABS API. BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.EXTENSION.GETURL CHROME.EXTENSION.GETVIEWS CHROME.TABS.CAPTUREVISIBLETAB CHROME.TABS.CREATE CHROME.TABS.ONUPDATED","b3de91ab04b7d7a2670ca7ee9d740eb42cead0b6":"TYPED URL HISTORY READS YOUR HISTORY, AND SHOWS THE TOP TEN PAGES YOU GO TO BY TYPING THE URL. BROWSER_ACTION HISTORY TABS CHROME.HISTORY.GETVISITS CHROME.HISTORY.SEARCH CHROME.TABS.CREATE"}</script> +<script>var search_data = {"4da084813a9c0f3de28821a1c8d2504f5f7bcbad":"A BROWSER ACTION WHICH CHANGES ITS ICON WHEN CLICKED. BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETICON","0569ec913dfd1aa4fad58fff04af99b0de7ec4b6":"A BROWSER ACTION WITH A POPUP THAT CHANGES THE PAGE COLOR. BROWSER_ACTION POPUP TABS CHROME.TABS.EXECUTESCRIPT","a02f64d5e8c8f96efb45b26c11bfa2320deddd36":"A BROWSER ACTION WITH NO ICON THAT MAKES THE PAGE RED BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.TABS.EXECUTESCRIPT","ebed3a237b5606a154cfc0e6326821154607d388":"ACCEPTLANGUAGE RETURNS ACCEPT LANGUAGES OF THE BROWSER BROWSER_ACTION POPUP CHROME.I18N.GETACCEPTLANGUAGES CHROME.I18N.GETMESSAGE","2f7777c80368bb0a8caf057dffaadd5feed7e9ee":"ANIMATED PAGE ACTION THIS EXTENSION ADDS AN ANIMATED BROWSER ACTION TO THE TOOLBAR. BACKGROUND_PAGE PAGE_ACTION TABS CHROME.PAGEACTION.HIDE CHROME.PAGEACTION.ONCLICKED CHROME.PAGEACTION.SETICON CHROME.PAGEACTION.SETTITLE CHROME.PAGEACTION.SHOW CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONSELECTIONCHANGED","4da5aeb0840b36af753e694f2e81c90620494688":"APP LAUNCHER BROWSER_ACTION MANAGEMENT CHROME.EXTENSION.GETURL CHROME.MANAGEMENT.GET CHROME.MANAGEMENT.GETALL CHROME.MANAGEMENT.LAUNCHAPP CHROME.TABS.CREATE","63349d2a4f5ec8f315a05fc9b1cab181ad546fd2":"BLANK NEW TAB PAGE CHROME_URL_OVERRIDES","4c45b5015d2ca5f9053514ac70ff3acc3bca1f76":"CHROME SOUNDS ENJOY A MORE MAGICAL AND IMMERSIVE EXPERIENCE WHEN BROWSING THE WEB USING THE POWER OF SOUND. BACKGROUND_PAGE BOOKMARKS OPTIONS_PAGE TABS CHROME.BOOKMARKS.ONCREATED CHROME.BOOKMARKS.ONMOVED CHROME.BOOKMARKS.ONREMOVED CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST CHROME.TABS.GET CHROME.TABS.ONATTACHED CHROME.TABS.ONCREATED CHROME.TABS.ONDETACHED CHROME.TABS.ONMOVED CHROME.TABS.ONREMOVED CHROME.TABS.ONSELECTIONCHANGED CHROME.TABS.ONUPDATED CHROME.WINDOWS.ONCREATED CHROME.WINDOWS.ONFOCUSCHANGED CHROME.WINDOWS.ONREMOVED","2f41f968c8b6ddfc078363e305d2b530802a11dd":"CHROMIUM BUILDBOT MONITOR DISPLAYS THE STATUS OF THE CHROMIUM BUILDBOT IN THE TOOLBAR. CLICK TO SEE MORE DETAILED STATUS IN A POPUP. BACKGROUND_PAGE BROWSER_ACTION NOTIFICATIONS OPTIONS_PAGE POPUP CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.BROWSERACTION.SETTITLE CHROME.EXTENSION.GETURL","32ff053c4a55b305243c83756304ca7c9d135ed0":"CHROMIUM SEARCH ADD SUPPORT TO THE OMNIBOX TO SEARCH THE CHROMIUM SOURCE CODE. BACKGROUND_PAGE TABS CHROME.OMNIBOX.ONINPUTCANCELLED CHROME.OMNIBOX.ONINPUTCHANGED CHROME.OMNIBOX.ONINPUTENTERED CHROME.OMNIBOX.ONINPUTSTARTED CHROME.OMNIBOX.SETDEFAULTSUGGESTION CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.UPDATE","6484bb796d9aef70aa1026c0edc0799bc7a48b68":"CLD DISPLAYS THE LANGUAGE OF A TAB BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.SETBADGETEXT CHROME.TABS.DETECTLANGUAGE CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONSELECTIONCHANGED CHROME.TABS.ONUPDATED","8818cf9ded850b5f0ba7348127526eb00165f202":"CONTEXT MENUS SAMPLE SHOWS SOME OF THE FEATURES OF THE CONTEXT MENUS API BACKGROUND_PAGE CONTEXTMENUS CHROME.CONTEXTMENUS.CREATE","ba79d21d1e9a1cf5edebc246b11f667406cb001f":"COOKIE API TEST EXTENSION TESTING COOKIE API BACKGROUND_PAGE BROWSER_ACTION COOKIES TABS CHROME.BROWSERACTION.ONCLICKED CHROME.COOKIES.GET CHROME.COOKIES.GETALL CHROME.COOKIES.ONCHANGED CHROME.COOKIES.REMOVE CHROME.EXTENSION.GETURL CHROME.TABS.CREATE CHROME.TABS.UPDATE CHROME.WINDOWS.GET CHROME.WINDOWS.GETALL","b6ab1c298a1c1f939b393f36868c937391502112":"CROSS-DOMAIN XMLHTTPREQUEST FROM A CONTENT SCRIPT DEMONSTRATES A METHOD TO MAKE A CROSS-DOMAIN XMLHTTPREQUEST FETCH FROM A CONTENT SCRIPT. THIS EXTENSION FETCHES THE CURRENT TRENDING TOPICS FROM TWITTER AND INSERTS THEM IN AN OVERLAY AT THE TOP OF GOOGLE NEWS. VISIT HTTP://NEWS.GOOGLE.COM TO TEST THIS EXTENSION. BACKGROUND_PAGE CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST","fad4ea2189bbcce1d2669a409ed296b10ec8b7c9":"EMAIL THIS PAGE (BY GOOGLE) THIS EXTENSION ADDS AN EMAIL BUTTON TO THE TOOLBAR WHICH ALLOWS YOU TO EMAIL THE PAGE LINK USING YOUR DEFAULT MAIL CLIENT OR GMAIL. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE TABS CHROME.BROWSERACTION.ONCLICKED CHROME.EXTENSION.CONNECT CHROME.EXTENSION.ONCONNECT CHROME.TABS.CREATE CHROME.TABS.EXECUTESCRIPT CHROME.TABS.UPDATE","26af638d88737474bed3837343caa13f3b924615":"EVENT TRACKING WITH GOOGLE ANALYTICS A SAMPLE EXTENSION WHICH USES GOOGLE ANALYTICS TO TRACK USAGE. BACKGROUND_PAGE BROWSER_ACTION POPUP","97c797be0add2ec9ce72747b1ecdbd9b80bc73d9":"EXTENSION DOCS SEARCH SEARCH THE CHROME EXTENSIONS DOCUMENTATION. TO USE, TYPE CRDOC PLUS A SEARCH TERM INTO THE OMNIBOX. BACKGROUND_PAGE TABS CHROME.OMNIBOX.ONINPUTCHANGED CHROME.OMNIBOX.ONINPUTENTERED CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.ONREMOVED CHROME.TABS.UPDATE","f802b3cce3b05de17dddd7ccfb3394d70f0ba1b5":"GOOGLE CALENDAR CHECKER (BY GOOGLE) QUICKLY SEE THE TIME UNTIL YOUR NEXT MEETING FROM ANY OF YOUR CALENDARS. CLICK ON THE BUTTON TO BE TAKEN TO YOUR CALENDAR. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.BROWSERACTION.SETICON CHROME.BROWSERACTION.SETTITLE CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST CHROME.I18N.GETMESSAGE CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.ONUPDATED CHROME.TABS.UPDATE","e83ae8cea73dfe87e420a9dac5e2906d795263cc":"GOOGLE DOCUMENT LIST VIEWER DEMONSTRATES HOW TO USE OAUTH TO CONNECT THE GOOGLE DOCUMENTS LIST DATA API. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE POPUP TABS CHROME.BROWSERACTION.SETBADGETEXT CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.GETURL CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONUPDATED CHROME.TABS.REMOVE","8ad6dbf5f536e3181945cd352930da9cc159dc71":"GOOGLE MAIL CHECKER DISPLAYS THE NUMBER OF UNREAD MESSAGES IN YOUR GOOGLE MAIL INBOX. YOU CAN ALSO CLICK THE BUTTON TO OPEN YOUR INBOX. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.BROWSERACTION.SETICON CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.I18N.GETMESSAGE CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.ONUPDATED CHROME.TABS.UPDATE","56529b7cbd67869d7fcebd6d46c3efddfe7b598f":"GOOGLE WAVE NOTIFIER FIND OUT WHEN YOU HAVE NEW WAVES AND PREVIEW THEM FAST. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE POPUP TABS CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.GETURL CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONUPDATED CHROME.TABS.REMOVE","6deee0c2a7dbdd62a80deb526005814fa37e6556":"HELLO WORLD THE FIRST EXTENSION THAT I MADE. BROWSER_ACTION POPUP","f0f5a81e76c7b29f8d13543dafd728285ecc96d7":"IDLE - SIMPLE EXAMPLE DEMONSTRATES THE IDLE API BACKGROUND_PAGE BROWSER_ACTION IDLE CHROME.BROWSERACTION.ONCLICKED CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.IDLE.ONSTATECHANGED CHROME.IDLE.QUERYSTATE","6e8555409ac09df65620a4f1651e9f283983eec5":"IGOOGLE NEW TAB PAGE CHROME_URL_OVERRIDES","e08426e68f327ea625937f4668b89da16da0e467":"IMAGEINFO GET IMAGE INFO FOR IMAGES, INCLUDING EXIF DATA BACKGROUND_PAGE CONTEXTMENUS TABS CHROME.CONTEXTMENUS.CREATE CHROME.TABS.GET CHROME.TABS.GETCURRENT CHROME.WINDOWS.CREATE CHROME.WINDOWS.UPDATE","5c7def7e0a26bac297128161b2bb9b2fc279985b":"MAPPY FINDS ADDRESSES IN THE WEB PAGE YOURE ON AND POPS UP A MAP WINDOW. BACKGROUND_PAGE PAGE_ACTION POPUP TABS CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.ONREQUEST CHROME.PAGEACTION.HIDE CHROME.PAGEACTION.SETTITLE CHROME.PAGEACTION.SHOW CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONSELECTIONCHANGED CHROME.TABS.ONUPDATED CHROME.TABS.SENDREQUEST","d72b4e8576fb00ad176957738099c930cffcfb9e":"MERGE WINDOWS MERGES ALL OF THE BROWSERS WINDOWS INTO THE CURRENT WINDOW BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.TABS.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.MOVE CHROME.WINDOWS.GET CHROME.WINDOWS.GETALL CHROME.WINDOWS.GETCURRENT","af975d20117c15a36dff66ef5a1ebca92f653969":"MESSAGE TIMER TIMES HOW LONG IT TAKES TO SEND A MESSAGE TO A CONTENT SCRIPT AND BACK. BROWSER_ACTION POPUP TABS CHROME.EXTENSION.ONCONNECT CHROME.EXTENSION.ONREQUEST CHROME.TABS.CONNECT CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.SENDREQUEST","7772f091557a50889effa6e5b19e83b4cf80399b":"MY BOOKMARKS A BROWSER ACTION WITH A POPUP DUMP OF ALL BOOKMARKS, INCLUDING SEARCH, ADD, EDIT AND DELETE. BOOKMARKS BROWSER_ACTION POPUP TABS CHROME.BOOKMARKS.CREATE CHROME.BOOKMARKS.GET CHROME.BOOKMARKS.GETTREE CHROME.BOOKMARKS.REMOVE CHROME.BOOKMARKS.UPDATE CHROME.TABS.CREATE","28c933f585b0903a56f9a16658aa26cf61f9da0f":"NEWS READER DISPLAYS THE FIRST 5 ITEMS FROM THE GOOGLE NEWS - TOP NEWS RSS FEED IN A POPUP. BROWSER_ACTION POPUP TABS CHROME.TABS.CREATE","80e7eac29801029c81ecaabb7c7021bbd0ceea88":"NEWS READER DISPLAYS THE FIRST 5 ITEMS FROM THE GOOGLE NEWS - TOP NEWS RSS FEED IN A POPUP. BROWSER_ACTION POPUP TABS CHROME.I18N.GETMESSAGE CHROME.TABS.CREATE","e9e5f15da193c45aad4d49ced748dfbbd6c904b3":"NEWS READER (BY GOOGLE) DISPLAYS THE LATEST STORIES FROM GOOGLE NEWS IN A POPUP. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE POPUP TABS CHROME.EXTENSION.GETURL CHROME.I18N.GETMESSAGE CHROME.TABS.CREATE","324e557c216dd6edbeb0112ed53d55a05b5e6112":"NOTIFICATION DEMO SHOWS OFF DESKTOP NOTIFICATIONS, WHICH ARE TOAST WINDOWS THAT POP UP ON THE DESKTOP. BACKGROUND_PAGE NOTIFICATIONS OPTIONS_PAGE TABS CHROME.TABS.CREATE","85a9f4cfd3645dfc4d1d90cc559261b689803626":"OMNIBOX EXAMPLE TO USE, TYPE OMNIX PLUS A SEARCH TERM INTO THE OMNIBOX. BACKGROUND_PAGE CHROME.OMNIBOX.ONINPUTCHANGED CHROME.OMNIBOX.ONINPUTENTERED","56bbb002845c9ada93807b2f83d51447adf146fd":"PAGE ACTION BY CONTENT SHOWS A PAGE ACTION FOR HTML PAGES CONTAINING THE WORD SANDWICH BACKGROUND_PAGE PAGE_ACTION CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST CHROME.PAGEACTION.SHOW","65afad56921c30f207a30f5ecf929e06b712f552":"PAGE ACTION BY URL SHOWS A PAGE ACTION FOR URLS WHICH HAVE THE LETTER G IN THEM. BACKGROUND_PAGE PAGE_ACTION TABS CHROME.PAGEACTION.SHOW CHROME.TABS.ONUPDATED","7446de67bf18dc34b5ff0fb4e1d9d7d166339bb9":"PAGE BENCHMARKER CHROMIUM PAGE BENCHMARKER. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.BROWSERACTION.SETTITLE CHROME.EXTENSION.CONNECT CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.GETEXTENSIONTABS CHROME.EXTENSION.GETURL CHROME.EXTENSION.ONCONNECT CHROME.TABS.CREATE CHROME.TABS.EXECUTESCRIPT CHROME.TABS.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.GETSELECTED CHROME.TABS.REMOVE CHROME.TABS.UPDATE CHROME.WINDOWS.GET CHROME.WINDOWS.GETCURRENT","a9ea9e35b2e9990e488afeb97407655ea14fc8dc":"PRINT THIS PAGE ADDS A PRINT BUTTON TO THE BROWSER. BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.TABS.UPDATE","455ec3784d8094b318eac572bc092ec07c5286b0":"PROCESS MONITOR ADDS A BROWSER ACTION THAT MONITORS RESOURCE USAGE OF ALL BROWSER PROCESSES. BROWSER_ACTION EXPERIMENTAL POPUP TABS CHROME.EXPERIMENTAL.PROCESSES.ONUPDATED","545d6989740a0e7f57a9751c2ebc0e250053a08f":"SAMPLE - OAUTH CONTACTS USES OAUTH TO CONNECT TO GOOGLES CONTACTS SERVICE AND DISPLAY A LIST OF YOUR CONTACTS. BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETICON CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.GETURL CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONUPDATED CHROME.TABS.REMOVE","39a3d4c4282ee5090652938decfb6df79b626151":"SANDWICHBAR SHOWS AN INFOBAR ON PAGES WHICH CONTAIN THE WORD SANDWICH BACKGROUND_PAGE EXPERIMENTAL CHROME.EXPERIMENTAL.INFOBARS.SHOW CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST","364415e46171be6479a095b214eab9783a4648d2":"SHOW TABS IN PROCESS ADDS A BROWSER ACTION SHOWING WHICH TABS SHARE THE CURRENT TABS PROCESS. BROWSER_ACTION EXPERIMENTAL POPUP TABS CHROME.EXPERIMENTAL.PROCESSES.GETPROCESSIDFORTAB CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.UPDATE CHROME.WINDOWS.GET CHROME.WINDOWS.GETALL CHROME.WINDOWS.GETCURRENT CHROME.WINDOWS.UPDATE","ad0d399dfc6d92af6ee9b759d7792a0d0bb85370":"TAB INSPECTOR UTILITY FOR WORKING WITH THE EXTENSION TABS API BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.EXTENSION.GETURL CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.GETSELECTED CHROME.TABS.MOVE CHROME.TABS.ONATTACHED CHROME.TABS.ONCREATED CHROME.TABS.ONDETACHED CHROME.TABS.ONMOVED CHROME.TABS.ONREMOVED CHROME.TABS.ONSELECTIONCHANGED CHROME.TABS.ONUPDATED CHROME.TABS.REMOVE CHROME.TABS.UPDATE CHROME.WINDOWS.CREATE CHROME.WINDOWS.GET CHROME.WINDOWS.GETALL CHROME.WINDOWS.GETCURRENT CHROME.WINDOWS.GETLASTFOCUSED CHROME.WINDOWS.ONCREATED CHROME.WINDOWS.ONFOCUSCHANGED CHROME.WINDOWS.ONREMOVED CHROME.WINDOWS.REMOVE CHROME.WINDOWS.UPDATE","1e28bcf89e80466f155ab3a01a76cf5f60cb4104":"TEST SCREENSHOT EXTENSION DEMONSTRATE SCREENSHOT FUNCTIONALITY IN THE CHROME.TABS API. BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.EXTENSION.GETURL CHROME.EXTENSION.GETVIEWS CHROME.TABS.CAPTUREVISIBLETAB CHROME.TABS.CREATE CHROME.TABS.ONUPDATED","7b375c0f2c88517b42a5a341ac77e0762b481233":"TYPED URL HISTORY READS YOUR HISTORY, AND SHOWS THE TOP TEN PAGES YOU GO TO BY TYPING THE URL. BROWSER_ACTION HISTORY TABS CHROME.HISTORY.GETVISITS CHROME.HISTORY.SEARCH CHROME.TABS.CREATE"}</script> <script src="js/sample_search.js"></script> @@ -351,11 +361,11 @@ </div> </div> -<div class="sample" id="0262260daf0c8f7b28feff2ef23b05e7abf9d1e0"> +<div class="sample" id="4da084813a9c0f3de28821a1c8d2504f5f7bcbad"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#0262260daf0c8f7b28feff2ef23b05e7abf9d1e0">A browser action which changes its icon when clicked.</a> + <a href="#4da084813a9c0f3de28821a1c8d2504f5f7bcbad">A browser action which changes its icon when clicked.</a> </h2> <p class="metadata features">Uses <span> @@ -382,21 +392,21 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/browserAction/set_icon_path/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\browserAction\set_icon_path\background.html?content-type=text/plain">background.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/browserAction/set_icon_path/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\browserAction\set_icon_path\manifest.json?content-type=text/plain">manifest.json</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/browserAction/set_icon_path/">Browse source</a> - - <a href="examples/api/browserAction/set_icon_path.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\browserAction\set_icon_path\">Browse source</a> + - <a href="examples\api\browserAction\set_icon_path.zip">Download source</a> </div> -</div><div class="sample" id="ea2894c41cb8e80a4433a3e6c5772dadce9be90d"> +</div><div class="sample" id="0569ec913dfd1aa4fad58fff04af99b0de7ec4b6"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#ea2894c41cb8e80a4433a3e6c5772dadce9be90d">A browser action with a popup that changes the page color.</a> + <a href="#0569ec913dfd1aa4fad58fff04af99b0de7ec4b6">A browser action with a popup that changes the page color.</a> </h2> <p class="metadata features">Uses <span> @@ -421,21 +431,21 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/browserAction/set_page_color/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\browserAction\set_page_color\manifest.json?content-type=text/plain">manifest.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/browserAction/set_page_color/popup.html?content-type=text/plain">popup.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\browserAction\set_page_color\popup.html?content-type=text/plain">popup.html</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/browserAction/set_page_color/">Browse source</a> - - <a href="examples/api/browserAction/set_page_color.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\browserAction\set_page_color\">Browse source</a> + - <a href="examples\api\browserAction\set_page_color.zip">Download source</a> </div> -</div><div class="sample" id="ede3c47b7757245be42ec33fd5ca63df4b490066"> +</div><div class="sample" id="a02f64d5e8c8f96efb45b26c11bfa2320deddd36"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#ede3c47b7757245be42ec33fd5ca63df4b490066">A browser action with no icon that makes the page red</a> + <a href="#a02f64d5e8c8f96efb45b26c11bfa2320deddd36">A browser action with no icon that makes the page red</a> </h2> <p class="metadata features">Uses <span> @@ -466,21 +476,21 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/browserAction/make_page_red/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\browserAction\make_page_red\background.html?content-type=text/plain">background.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/browserAction/make_page_red/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\browserAction\make_page_red\manifest.json?content-type=text/plain">manifest.json</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/browserAction/make_page_red/">Browse source</a> - - <a href="examples/api/browserAction/make_page_red.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\browserAction\make_page_red\">Browse source</a> + - <a href="examples\api\browserAction\make_page_red.zip">Download source</a> </div> -</div><div class="sample" id="fbf0aa1a09a15ff8cc4fc7de4fd176d6c663d07a"> +</div><div class="sample" id="ebed3a237b5606a154cfc0e6326821154607d388"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#fbf0aa1a09a15ff8cc4fc7de4fd176d6c663d07a">AcceptLanguage</a> + <a href="#ebed3a237b5606a154cfc0e6326821154607d388">AcceptLanguage</a> </h2> <p class="metadata features">Uses <span> @@ -504,27 +514,27 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/i18n/getMessage/_locales/en_US/messages.json?content-type=text/plain">_locales/en_US/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\i18n\getMessage\_locales\en_US\messages.json?content-type=text/plain">_locales\en_US\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/i18n/getMessage/_locales/es/messages.json?content-type=text/plain">_locales/es/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\i18n\getMessage\_locales\es\messages.json?content-type=text/plain">_locales\es\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/i18n/getMessage/_locales/sr/messages.json?content-type=text/plain">_locales/sr/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\i18n\getMessage\_locales\sr\messages.json?content-type=text/plain">_locales\sr\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/i18n/getMessage/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\i18n\getMessage\manifest.json?content-type=text/plain">manifest.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/i18n/getMessage/popup.html?content-type=text/plain">popup.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\i18n\getMessage\popup.html?content-type=text/plain">popup.html</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/i18n/getMessage/">Browse source</a> - - <a href="examples/api/i18n/getMessage.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\i18n\getMessage\">Browse source</a> + - <a href="examples\api\i18n\getMessage.zip">Download source</a> </div> -</div><div class="sample" id="9a6e4ec46997fb92b324974afa08a3d007e2537f"> +</div><div class="sample" id="2f7777c80368bb0a8caf057dffaadd5feed7e9ee"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#9a6e4ec46997fb92b324974afa08a3d007e2537f">Animated Page Action</a> + <a href="#2f7777c80368bb0a8caf057dffaadd5feed7e9ee">Animated Page Action</a> </h2> <p class="metadata features">Uses <span> @@ -563,21 +573,21 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/pageAction/set_icon/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\pageAction\set_icon\background.html?content-type=text/plain">background.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/pageAction/set_icon/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\pageAction\set_icon\manifest.json?content-type=text/plain">manifest.json</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/pageAction/set_icon/">Browse source</a> - - <a href="examples/api/pageAction/set_icon.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\pageAction\set_icon\">Browse source</a> + - <a href="examples\api\pageAction\set_icon.zip">Download source</a> </div> -</div><div class="sample" id="a1f7cf79dd555b04fa8d603247a040e644996293"> +</div><div class="sample" id="4da5aeb0840b36af753e694f2e81c90620494688"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#a1f7cf79dd555b04fa8d603247a040e644996293">App Launcher</a> + <a href="#4da5aeb0840b36af753e694f2e81c90620494688">App Launcher</a> </h2> <p class="metadata features">Uses <span> @@ -607,25 +617,25 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/app_launcher/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\app_launcher\manifest.json?content-type=text/plain">manifest.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/app_launcher/popup.css?content-type=text/plain">popup.css</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\app_launcher\popup.css?content-type=text/plain">popup.css</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/app_launcher/popup.html?content-type=text/plain">popup.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\app_launcher\popup.html?content-type=text/plain">popup.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/app_launcher/popup.js?content-type=text/plain">popup.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\app_launcher\popup.js?content-type=text/plain">popup.js</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/app_launcher/">Browse source</a> - - <a href="examples/extensions/app_launcher.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\app_launcher\">Browse source</a> + - <a href="examples\extensions\app_launcher.zip">Download source</a> </div> -</div><div class="sample" id="9747e3d6a3eab39bc7c17f11a80573c62d44c7e5"> +</div><div class="sample" id="63349d2a4f5ec8f315a05fc9b1cab181ad546fd2"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#9747e3d6a3eab39bc7c17f11a80573c62d44c7e5">Blank new tab page</a> + <a href="#63349d2a4f5ec8f315a05fc9b1cab181ad546fd2">Blank new tab page</a> </h2> <p class="metadata features">Uses <span> @@ -644,21 +654,21 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/override/blank_ntp/blank.html?content-type=text/plain">blank.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\override\blank_ntp\blank.html?content-type=text/plain">blank.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/override/blank_ntp/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\override\blank_ntp\manifest.json?content-type=text/plain">manifest.json</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/override/blank_ntp/">Browse source</a> - - <a href="examples/api/override/blank_ntp.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\override\blank_ntp\">Browse source</a> + - <a href="examples\api\override\blank_ntp.zip">Download source</a> </div> -</div><div class="sample" id="903e7277139e1e6caec123d3319cab295d8d1b3a"> - <img class="icon" src="examples/extensions/fx/icon.png"> +</div><div class="sample" id="4c45b5015d2ca5f9053514ac70ff3acc3bca1f76"> + <img class="icon" src="examples\extensions\fx\icon.png"> <img class="icon" src="images/sample-default-icon.png" style="display: none; "> <h2 class="name"> - <a href="#903e7277139e1e6caec123d3319cab295d8d1b3a">Chrome Sounds</a> + <a href="#4c45b5015d2ca5f9053514ac70ff3acc3bca1f76">Chrome Sounds</a> </h2> <p class="metadata features">Uses <span> @@ -718,27 +728,27 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/fx/bg.html?content-type=text/plain">bg.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\fx\bg.html?content-type=text/plain">bg.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/fx/bg.js?content-type=text/plain">bg.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\fx\bg.js?content-type=text/plain">bg.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/fx/content.js?content-type=text/plain">content.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\fx\content.js?content-type=text/plain">content.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/fx/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\fx\manifest.json?content-type=text/plain">manifest.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/fx/options.html?content-type=text/plain">options.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\fx\options.html?content-type=text/plain">options.html</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/fx/">Browse source</a> - - <a href="examples/extensions/fx.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\fx\">Browse source</a> + - <a href="examples\extensions\fx.zip">Download source</a> </div> -</div><div class="sample" id="0e790e035a4a00b6f1def5ef9a7d7be1bce95ab5"> - <img class="icon" src="examples/extensions/buildbot/icon.png"> +</div><div class="sample" id="2f41f968c8b6ddfc078363e305d2b530802a11dd"> + <img class="icon" src="examples\extensions\buildbot\icon.png"> <img class="icon" src="images/sample-default-icon.png" style="display: none; "> <h2 class="name"> - <a href="#0e790e035a4a00b6f1def5ef9a7d7be1bce95ab5">Chromium Buildbot Monitor</a> + <a href="#2f41f968c8b6ddfc078363e305d2b530802a11dd">Chromium Buildbot Monitor</a> </h2> <p class="metadata features">Uses <span> @@ -775,25 +785,25 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/buildbot/bg.html?content-type=text/plain">bg.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\buildbot\bg.html?content-type=text/plain">bg.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/buildbot/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\buildbot\manifest.json?content-type=text/plain">manifest.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/buildbot/options.html?content-type=text/plain">options.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\buildbot\options.html?content-type=text/plain">options.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/buildbot/popup.html?content-type=text/plain">popup.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\buildbot\popup.html?content-type=text/plain">popup.html</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/buildbot/">Browse source</a> - - <a href="examples/extensions/buildbot.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\buildbot\">Browse source</a> + - <a href="examples\extensions\buildbot.zip">Download source</a> </div> -</div><div class="sample" id="ac31228200b41a87982e386cc90d3a6eee4ad885"> +</div><div class="sample" id="32ff053c4a55b305243c83756304ca7c9d135ed0"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#ac31228200b41a87982e386cc90d3a6eee4ad885">Chromium Search</a> + <a href="#32ff053c4a55b305243c83756304ca7c9d135ed0">Chromium Search</a> </h2> <p class="metadata features">Uses <span> @@ -829,21 +839,21 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/chrome_search/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\chrome_search\background.html?content-type=text/plain">background.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/chrome_search/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\chrome_search\manifest.json?content-type=text/plain">manifest.json</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/chrome_search/">Browse source</a> - - <a href="examples/extensions/chrome_search.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\chrome_search\">Browse source</a> + - <a href="examples\extensions\chrome_search.zip">Download source</a> </div> -</div><div class="sample" id="7d5d6cf195bc25480256618e360aa38c6e6fba82"> +</div><div class="sample" id="6484bb796d9aef70aa1026c0edc0799bc7a48b68"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#7d5d6cf195bc25480256618e360aa38c6e6fba82">CLD</a> + <a href="#6484bb796d9aef70aa1026c0edc0799bc7a48b68">CLD</a> </h2> <p class="metadata features">Uses <span> @@ -878,21 +888,21 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/i18n/cld/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\i18n\cld\background.html?content-type=text/plain">background.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/i18n/cld/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\i18n\cld\manifest.json?content-type=text/plain">manifest.json</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/i18n/cld/">Browse source</a> - - <a href="examples/api/i18n/cld.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\i18n\cld\">Browse source</a> + - <a href="examples\api\i18n\cld.zip">Download source</a> </div> -</div><div class="sample" id="5d81304a17cf7ac2887484f730fbd2b01e51e166"> +</div><div class="sample" id="8818cf9ded850b5f0ba7348127526eb00165f202"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#5d81304a17cf7ac2887484f730fbd2b01e51e166">Context Menus Sample</a> + <a href="#8818cf9ded850b5f0ba7348127526eb00165f202">Context Menus Sample</a> </h2> <p class="metadata features">Uses <span> @@ -914,23 +924,23 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/contextMenus/basic/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\contextMenus\basic\background.html?content-type=text/plain">background.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/contextMenus/basic/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\contextMenus\basic\manifest.json?content-type=text/plain">manifest.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/contextMenus/basic/sample.js?content-type=text/plain">sample.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\contextMenus\basic\sample.js?content-type=text/plain">sample.js</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/contextMenus/basic/">Browse source</a> - - <a href="examples/api/contextMenus/basic.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\contextMenus\basic\">Browse source</a> + - <a href="examples\api\contextMenus\basic.zip">Download source</a> </div> -</div><div class="sample" id="4daa6becd0899a54776d9cf7f09613ed1a9f4d77"> - <img class="icon" src="examples/api/cookies/cookie.png"> +</div><div class="sample" id="ba79d21d1e9a1cf5edebc246b11f667406cb001f"> + <img class="icon" src="examples\api\cookies\cookie.png"> <img class="icon" src="images/sample-default-icon.png" style="display: none; "> <h2 class="name"> - <a href="#4daa6becd0899a54776d9cf7f09613ed1a9f4d77">Cookie API Test Extension</a> + <a href="#ba79d21d1e9a1cf5edebc246b11f667406cb001f">Cookie API Test Extension</a> </h2> <p class="metadata features">Uses <span> @@ -976,23 +986,23 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/cookies/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\cookies\background.html?content-type=text/plain">background.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/cookies/manager.html?content-type=text/plain">manager.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\cookies\manager.html?content-type=text/plain">manager.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/cookies/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\cookies\manifest.json?content-type=text/plain">manifest.json</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/cookies/">Browse source</a> - - <a href="examples/api/cookies.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\cookies\">Browse source</a> + - <a href="examples\api\cookies.zip">Download source</a> </div> -</div><div class="sample" id="6871d09f4a96bf9d4b6cc724d00e909cee0f3902"> - <img class="icon" src="examples/howto/contentscript_xhr/sample-128.png"> +</div><div class="sample" id="b6ab1c298a1c1f939b393f36868c937391502112"> + <img class="icon" src="examples\howto\contentscript_xhr\sample-128.png"> <img class="icon" src="images/sample-default-icon.png" style="display: none; "> <h2 class="name"> - <a href="#6871d09f4a96bf9d4b6cc724d00e909cee0f3902">Cross-domain XMLHttpRequest from a content script</a> + <a href="#b6ab1c298a1c1f939b393f36868c937391502112">Cross-domain XMLHttpRequest from a content script</a> </h2> <p class="metadata features">Uses <span> @@ -1013,23 +1023,23 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/howto/contentscript_xhr/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\howto\contentscript_xhr\background.html?content-type=text/plain">background.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/howto/contentscript_xhr/contentscript.js?content-type=text/plain">contentscript.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\howto\contentscript_xhr\contentscript.js?content-type=text/plain">contentscript.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/howto/contentscript_xhr/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\howto\contentscript_xhr\manifest.json?content-type=text/plain">manifest.json</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/howto/contentscript_xhr/">Browse source</a> - - <a href="examples/howto/contentscript_xhr.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\howto\contentscript_xhr\">Browse source</a> + - <a href="examples\howto\contentscript_xhr.zip">Download source</a> </div> -</div><div class="sample" id="028eb5364924344029bcbe1d527f132fc72b34e5"> - <img class="icon" src="examples/extensions/email_this_page/mail_128x128.png"> +</div><div class="sample" id="fad4ea2189bbcce1d2669a409ed296b10ec8b7c9"> + <img class="icon" src="examples\extensions\email_this_page\mail_128x128.png"> <img class="icon" src="images/sample-default-icon.png" style="display: none; "> <h2 class="name"> - <a href="#028eb5364924344029bcbe1d527f132fc72b34e5">Email this page (by Google)</a> + <a href="#fad4ea2189bbcce1d2669a409ed296b10ec8b7c9">Email this page (by Google)</a> </h2> <p class="metadata features">Uses <span> @@ -1067,25 +1077,25 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/email_this_page/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\email_this_page\background.html?content-type=text/plain">background.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/email_this_page/content_script.js?content-type=text/plain">content_script.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\email_this_page\content_script.js?content-type=text/plain">content_script.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/email_this_page/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\email_this_page\manifest.json?content-type=text/plain">manifest.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/email_this_page/options.html?content-type=text/plain">options.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\email_this_page\options.html?content-type=text/plain">options.html</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/email_this_page/">Browse source</a> - - <a href="examples/extensions/email_this_page.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\email_this_page\">Browse source</a> + - <a href="examples\extensions\email_this_page.zip">Download source</a> </div> -</div><div class="sample" id="763a08e9b06595d785568a8d392b95a2f3700258"> - <img class="icon" src="examples/tutorials/analytics/analytics-extension-icon-128.png"> +</div><div class="sample" id="26af638d88737474bed3837343caa13f3b924615"> + <img class="icon" src="examples\tutorials\analytics\analytics-extension-icon-128.png"> <img class="icon" src="images/sample-default-icon.png" style="display: none; "> <h2 class="name"> - <a href="#763a08e9b06595d785568a8d392b95a2f3700258">Event Tracking with Google Analytics</a> + <a href="#26af638d88737474bed3837343caa13f3b924615">Event Tracking with Google Analytics</a> </h2> <p class="metadata features">Uses <span> @@ -1110,25 +1120,25 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/tutorials/analytics/analytics.js?content-type=text/plain">analytics.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\tutorials\analytics\analytics.js?content-type=text/plain">analytics.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/tutorials/analytics/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\tutorials\analytics\background.html?content-type=text/plain">background.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/tutorials/analytics/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\tutorials\analytics\manifest.json?content-type=text/plain">manifest.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/tutorials/analytics/popup.html?content-type=text/plain">popup.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\tutorials\analytics\popup.html?content-type=text/plain">popup.html</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/tutorials/analytics/">Browse source</a> - - <a href="examples/tutorials/analytics.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\tutorials\analytics\">Browse source</a> + - <a href="examples\tutorials\analytics.zip">Download source</a> </div> -</div><div class="sample" id="e3df888a89e35bdeb9c8bc8d03be5e1851b97c68"> - <img class="icon" src="examples/api/omnibox/extension-docs/icon-128.png"> +</div><div class="sample" id="97c797be0add2ec9ce72747b1ecdbd9b80bc73d9"> + <img class="icon" src="examples\api\omnibox\extension-docs\icon-128.png"> <img class="icon" src="images/sample-default-icon.png" style="display: none; "> <h2 class="name"> - <a href="#e3df888a89e35bdeb9c8bc8d03be5e1851b97c68">Extension Docs Search</a> + <a href="#97c797be0add2ec9ce72747b1ecdbd9b80bc73d9">Extension Docs Search</a> </h2> <p class="metadata features">Uses <span> @@ -1160,21 +1170,21 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/omnibox/extension-docs/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\omnibox\extension-docs\background.html?content-type=text/plain">background.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/omnibox/extension-docs/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\omnibox\extension-docs\manifest.json?content-type=text/plain">manifest.json</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/omnibox/extension-docs/">Browse source</a> - - <a href="examples/api/omnibox/extension-docs.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\omnibox\extension-docs\">Browse source</a> + - <a href="examples\api\omnibox\extension-docs.zip">Download source</a> </div> -</div><div class="sample" id="8b0dd31216235941bdd8eb33fda915ef5cf79a82"> - <img class="icon" src="examples/extensions/calendar/images/icon-128.gif"> +</div><div class="sample" id="f802b3cce3b05de17dddd7ccfb3394d70f0ba1b5"> + <img class="icon" src="examples\extensions\calendar\images/icon-128.gif"> <img class="icon" src="images/sample-default-icon.png" style="display: none; "> <h2 class="name"> - <a href="#8b0dd31216235941bdd8eb33fda915ef5cf79a82">Google Calendar Checker (by Google)</a> + <a href="#f802b3cce3b05de17dddd7ccfb3394d70f0ba1b5">Google Calendar Checker (by Google)</a> </h2> <p class="metadata features">Uses <span> @@ -1228,31 +1238,31 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/calendar/_locales/en/messages.json?content-type=text/plain">_locales/en/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\calendar\_locales\en\messages.json?content-type=text/plain">_locales\en\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/calendar/javascript/background.js?content-type=text/plain">javascript/background.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\calendar\javascript\background.js?content-type=text/plain">javascript\background.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/calendar/javascript/options.js?content-type=text/plain">javascript/options.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\calendar\javascript\options.js?content-type=text/plain">javascript\options.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/calendar/javascript/util.js?content-type=text/plain">javascript/util.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\calendar\javascript\util.js?content-type=text/plain">javascript\util.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/calendar/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\calendar\manifest.json?content-type=text/plain">manifest.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/calendar/views/background.html?content-type=text/plain">views/background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\calendar\views\background.html?content-type=text/plain">views\background.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/calendar/views/options.html?content-type=text/plain">views/options.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\calendar\views\options.html?content-type=text/plain">views\options.html</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/calendar/">Browse source</a> - - <a href="examples/extensions/calendar.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\calendar\">Browse source</a> + - <a href="examples\extensions\calendar.zip">Download source</a> </div> -</div><div class="sample" id="4e35caa9742fb82dbd628892d23a781614f6eff6"> - <img class="icon" src="examples/extensions/gdocs/img/docs_spreadsheets-128.gif"> +</div><div class="sample" id="e83ae8cea73dfe87e420a9dac5e2906d795263cc"> + <img class="icon" src="examples\extensions\gdocs\img/docs_spreadsheets-128.gif"> <img class="icon" src="images/sample-default-icon.png" style="display: none; "> <h2 class="name"> - <a href="#4e35caa9742fb82dbd628892d23a781614f6eff6">Google Document List Viewer</a> + <a href="#e83ae8cea73dfe87e420a9dac5e2906d795263cc">Google Document List Viewer</a> </h2> <p class="metadata features">Uses <span> @@ -1297,33 +1307,33 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gdocs/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gdocs\background.html?content-type=text/plain">background.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gdocs/chrome_ex_oauth.html?content-type=text/plain">chrome_ex_oauth.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gdocs\chrome_ex_oauth.html?content-type=text/plain">chrome_ex_oauth.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gdocs/chrome_ex_oauth.js?content-type=text/plain">chrome_ex_oauth.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gdocs\chrome_ex_oauth.js?content-type=text/plain">chrome_ex_oauth.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gdocs/chrome_ex_oauthsimple.js?content-type=text/plain">chrome_ex_oauthsimple.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gdocs\chrome_ex_oauthsimple.js?content-type=text/plain">chrome_ex_oauthsimple.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gdocs/js/jquery-1.4.1.min.js?content-type=text/plain">js/jquery-1.4.1.min.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gdocs\js\jquery-1.4.1.min.js?content-type=text/plain">js\jquery-1.4.1.min.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gdocs/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gdocs\manifest.json?content-type=text/plain">manifest.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gdocs/options.html?content-type=text/plain">options.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gdocs\options.html?content-type=text/plain">options.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gdocs/popup.html?content-type=text/plain">popup.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gdocs\popup.html?content-type=text/plain">popup.html</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gdocs/">Browse source</a> - - <a href="examples/extensions/gdocs.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gdocs\">Browse source</a> + - <a href="examples\extensions\gdocs.zip">Download source</a> </div> -</div><div class="sample" id="bb57f7a0132cbeb36ad7e7bb0ab75c21704234ca"> - <img class="icon" src="examples/extensions/gmail/icon_128.png"> +</div><div class="sample" id="8ad6dbf5f536e3181945cd352930da9cc159dc71"> + <img class="icon" src="examples\extensions\gmail\icon_128.png"> <img class="icon" src="images/sample-default-icon.png" style="display: none; "> <h2 class="name"> - <a href="#bb57f7a0132cbeb36ad7e7bb0ab75c21704234ca">Google Mail Checker</a> + <a href="#8ad6dbf5f536e3181945cd352930da9cc159dc71">Google Mail Checker</a> </h2> <p class="metadata features">Uses <span> @@ -1371,107 +1381,107 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/ar/messages.json?content-type=text/plain">_locales/ar/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\ar\messages.json?content-type=text/plain">_locales\ar\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/bg/messages.json?content-type=text/plain">_locales/bg/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\bg\messages.json?content-type=text/plain">_locales\bg\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/ca/messages.json?content-type=text/plain">_locales/ca/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\ca\messages.json?content-type=text/plain">_locales\ca\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/cs/messages.json?content-type=text/plain">_locales/cs/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\cs\messages.json?content-type=text/plain">_locales\cs\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/da/messages.json?content-type=text/plain">_locales/da/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\da\messages.json?content-type=text/plain">_locales\da\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/de/messages.json?content-type=text/plain">_locales/de/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\de\messages.json?content-type=text/plain">_locales\de\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/el/messages.json?content-type=text/plain">_locales/el/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\el\messages.json?content-type=text/plain">_locales\el\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/en/messages.json?content-type=text/plain">_locales/en/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\en\messages.json?content-type=text/plain">_locales\en\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/en_GB/messages.json?content-type=text/plain">_locales/en_GB/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\en_GB\messages.json?content-type=text/plain">_locales\en_GB\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/es/messages.json?content-type=text/plain">_locales/es/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\es\messages.json?content-type=text/plain">_locales\es\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/es_419/messages.json?content-type=text/plain">_locales/es_419/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\es_419\messages.json?content-type=text/plain">_locales\es_419\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/et/messages.json?content-type=text/plain">_locales/et/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\et\messages.json?content-type=text/plain">_locales\et\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/fi/messages.json?content-type=text/plain">_locales/fi/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\fi\messages.json?content-type=text/plain">_locales\fi\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/fil/messages.json?content-type=text/plain">_locales/fil/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\fil\messages.json?content-type=text/plain">_locales\fil\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/fr/messages.json?content-type=text/plain">_locales/fr/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\fr\messages.json?content-type=text/plain">_locales\fr\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/he/messages.json?content-type=text/plain">_locales/he/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\he\messages.json?content-type=text/plain">_locales\he\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/hi/messages.json?content-type=text/plain">_locales/hi/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\hi\messages.json?content-type=text/plain">_locales\hi\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/hr/messages.json?content-type=text/plain">_locales/hr/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\hr\messages.json?content-type=text/plain">_locales\hr\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/hu/messages.json?content-type=text/plain">_locales/hu/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\hu\messages.json?content-type=text/plain">_locales\hu\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/id/messages.json?content-type=text/plain">_locales/id/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\id\messages.json?content-type=text/plain">_locales\id\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/it/messages.json?content-type=text/plain">_locales/it/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\it\messages.json?content-type=text/plain">_locales\it\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/ja/messages.json?content-type=text/plain">_locales/ja/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\ja\messages.json?content-type=text/plain">_locales\ja\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/ko/messages.json?content-type=text/plain">_locales/ko/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\ko\messages.json?content-type=text/plain">_locales\ko\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/lt/messages.json?content-type=text/plain">_locales/lt/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\lt\messages.json?content-type=text/plain">_locales\lt\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/lv/messages.json?content-type=text/plain">_locales/lv/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\lv\messages.json?content-type=text/plain">_locales\lv\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/nb/messages.json?content-type=text/plain">_locales/nb/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\nb\messages.json?content-type=text/plain">_locales\nb\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/nl/messages.json?content-type=text/plain">_locales/nl/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\nl\messages.json?content-type=text/plain">_locales\nl\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/pl/messages.json?content-type=text/plain">_locales/pl/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\pl\messages.json?content-type=text/plain">_locales\pl\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/pt_BR/messages.json?content-type=text/plain">_locales/pt_BR/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\pt_BR\messages.json?content-type=text/plain">_locales\pt_BR\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/pt_PT/messages.json?content-type=text/plain">_locales/pt_PT/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\pt_PT\messages.json?content-type=text/plain">_locales\pt_PT\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/ro/messages.json?content-type=text/plain">_locales/ro/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\ro\messages.json?content-type=text/plain">_locales\ro\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/ru/messages.json?content-type=text/plain">_locales/ru/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\ru\messages.json?content-type=text/plain">_locales\ru\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/sk/messages.json?content-type=text/plain">_locales/sk/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\sk\messages.json?content-type=text/plain">_locales\sk\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/sl/messages.json?content-type=text/plain">_locales/sl/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\sl\messages.json?content-type=text/plain">_locales\sl\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/sr/messages.json?content-type=text/plain">_locales/sr/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\sr\messages.json?content-type=text/plain">_locales\sr\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/sv/messages.json?content-type=text/plain">_locales/sv/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\sv\messages.json?content-type=text/plain">_locales\sv\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/th/messages.json?content-type=text/plain">_locales/th/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\th\messages.json?content-type=text/plain">_locales\th\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/tr/messages.json?content-type=text/plain">_locales/tr/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\tr\messages.json?content-type=text/plain">_locales\tr\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/uk/messages.json?content-type=text/plain">_locales/uk/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\uk\messages.json?content-type=text/plain">_locales\uk\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/vi/messages.json?content-type=text/plain">_locales/vi/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\vi\messages.json?content-type=text/plain">_locales\vi\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/zh_CN/messages.json?content-type=text/plain">_locales/zh_CN/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\zh_CN\messages.json?content-type=text/plain">_locales\zh_CN\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/_locales/zh_TW/messages.json?content-type=text/plain">_locales/zh_TW/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\_locales\zh_TW\messages.json?content-type=text/plain">_locales\zh_TW\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\background.html?content-type=text/plain">background.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\manifest.json?content-type=text/plain">manifest.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/options.html?content-type=text/plain">options.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\options.html?content-type=text/plain">options.html</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/gmail/">Browse source</a> - - <a href="examples/extensions/gmail.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\gmail\">Browse source</a> + - <a href="examples\extensions\gmail.zip">Download source</a> </div> -</div><div class="sample" id="1682e05ea9a1bde985123b04f6f8ac50a8a64033"> - <img class="icon" src="examples/extensions/wave/128.png"> +</div><div class="sample" id="56529b7cbd67869d7fcebd6d46c3efddfe7b598f"> + <img class="icon" src="examples\extensions\wave\128.png"> <img class="icon" src="images/sample-default-icon.png" style="display: none; "> <h2 class="name"> - <a href="#1682e05ea9a1bde985123b04f6f8ac50a8a64033">Google Wave Notifier</a> + <a href="#56529b7cbd67869d7fcebd6d46c3efddfe7b598f">Google Wave Notifier</a> </h2> <p class="metadata features">Uses <span> @@ -1514,33 +1524,33 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/wave/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\wave\background.html?content-type=text/plain">background.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/wave/chrome_ex_oauth.html?content-type=text/plain">chrome_ex_oauth.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\wave\chrome_ex_oauth.html?content-type=text/plain">chrome_ex_oauth.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/wave/chrome_ex_oauth.js?content-type=text/plain">chrome_ex_oauth.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\wave\chrome_ex_oauth.js?content-type=text/plain">chrome_ex_oauth.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/wave/chrome_ex_oauthsimple.js?content-type=text/plain">chrome_ex_oauthsimple.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\wave\chrome_ex_oauthsimple.js?content-type=text/plain">chrome_ex_oauthsimple.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/wave/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\wave\manifest.json?content-type=text/plain">manifest.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/wave/options.html?content-type=text/plain">options.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\wave\options.html?content-type=text/plain">options.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/wave/popup.html?content-type=text/plain">popup.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\wave\popup.html?content-type=text/plain">popup.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/wave/prettyload.js?content-type=text/plain">prettyload.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\wave\prettyload.js?content-type=text/plain">prettyload.js</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/wave/">Browse source</a> - - <a href="examples/extensions/wave.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\wave\">Browse source</a> + - <a href="examples\extensions\wave.zip">Download source</a> </div> -</div><div class="sample" id="14b9651fda4e57b2a5914ba73a779812201b750a"> +</div><div class="sample" id="6deee0c2a7dbdd62a80deb526005814fa37e6556"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#14b9651fda4e57b2a5914ba73a779812201b750a">Hello World</a> + <a href="#6deee0c2a7dbdd62a80deb526005814fa37e6556">Hello World</a> </h2> <p class="metadata features">Uses <span> @@ -1562,21 +1572,21 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/tutorials/getstarted/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\tutorials\getstarted\manifest.json?content-type=text/plain">manifest.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/tutorials/getstarted/popup.html?content-type=text/plain">popup.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\tutorials\getstarted\popup.html?content-type=text/plain">popup.html</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/tutorials/getstarted/">Browse source</a> - - <a href="examples/tutorials/getstarted.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\tutorials\getstarted\">Browse source</a> + - <a href="examples\tutorials\getstarted.zip">Download source</a> </div> -</div><div class="sample" id="2020d72f2577f53caf8e94e3dbac0fb849ceaa4d"> - <img class="icon" src="examples/api/idle/idle_simple/sample-128.png"> +</div><div class="sample" id="f0f5a81e76c7b29f8d13543dafd728285ecc96d7"> + <img class="icon" src="examples\api\idle\idle_simple\sample-128.png"> <img class="icon" src="images/sample-default-icon.png" style="display: none; "> <h2 class="name"> - <a href="#2020d72f2577f53caf8e94e3dbac0fb849ceaa4d">Idle - Simple Example</a> + <a href="#f0f5a81e76c7b29f8d13543dafd728285ecc96d7">Idle - Simple Example</a> </h2> <p class="metadata features">Uses <span> @@ -1607,23 +1617,23 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/idle/idle_simple/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\idle\idle_simple\background.html?content-type=text/plain">background.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/idle/idle_simple/history.html?content-type=text/plain">history.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\idle\idle_simple\history.html?content-type=text/plain">history.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/idle/idle_simple/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\idle\idle_simple\manifest.json?content-type=text/plain">manifest.json</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/idle/idle_simple/">Browse source</a> - - <a href="examples/api/idle/idle_simple.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\idle\idle_simple\">Browse source</a> + - <a href="examples\api\idle\idle_simple.zip">Download source</a> </div> -</div><div class="sample" id="0ea1588bd07b20338fc21f725de1542a5fdf9726"> +</div><div class="sample" id="6e8555409ac09df65620a4f1651e9f283983eec5"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#0ea1588bd07b20338fc21f725de1542a5fdf9726">iGoogle new tab page</a> + <a href="#6e8555409ac09df65620a4f1651e9f283983eec5">iGoogle new tab page</a> </h2> <p class="metadata features">Uses <span> @@ -1642,21 +1652,21 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/override/override_igoogle/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\override\override_igoogle\manifest.json?content-type=text/plain">manifest.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/override/override_igoogle/redirect.html?content-type=text/plain">redirect.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\override\override_igoogle\redirect.html?content-type=text/plain">redirect.html</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/override/override_igoogle/">Browse source</a> - - <a href="examples/api/override/override_igoogle.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\override\override_igoogle\">Browse source</a> + - <a href="examples\api\override\override_igoogle.zip">Download source</a> </div> -</div><div class="sample" id="646325c25f572a1d15edc73d057f821d847a4fbe"> - <img class="icon" src="examples/extensions/imageinfo/imageinfo-128.png"> +</div><div class="sample" id="e08426e68f327ea625937f4668b89da16da0e467"> + <img class="icon" src="examples\extensions\imageinfo\imageinfo-128.png"> <img class="icon" src="images/sample-default-icon.png" style="display: none; "> <h2 class="name"> - <a href="#646325c25f572a1d15edc73d057f821d847a4fbe">Imageinfo</a> + <a href="#e08426e68f327ea625937f4668b89da16da0e467">Imageinfo</a> </h2> <p class="metadata features">Uses <span> @@ -1689,29 +1699,29 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/imageinfo/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\imageinfo\background.html?content-type=text/plain">background.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/imageinfo/imageinfo/binaryajax.js?content-type=text/plain">imageinfo/binaryajax.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\imageinfo\imageinfo\binaryajax.js?content-type=text/plain">imageinfo\binaryajax.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/imageinfo/imageinfo/exif.js?content-type=text/plain">imageinfo/exif.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\imageinfo\imageinfo\exif.js?content-type=text/plain">imageinfo\exif.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/imageinfo/imageinfo/imageinfo.js?content-type=text/plain">imageinfo/imageinfo.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\imageinfo\imageinfo\imageinfo.js?content-type=text/plain">imageinfo\imageinfo.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/imageinfo/info.html?content-type=text/plain">info.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\imageinfo\info.html?content-type=text/plain">info.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/imageinfo/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\imageinfo\manifest.json?content-type=text/plain">manifest.json</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/imageinfo/">Browse source</a> - - <a href="examples/extensions/imageinfo.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\imageinfo\">Browse source</a> + - <a href="examples\extensions\imageinfo.zip">Download source</a> </div> -</div><div class="sample" id="ec97ec20ca2f095d081e39f1565fc12af09ef067"> - <img class="icon" src="examples/extensions/mappy/icon.png"> +</div><div class="sample" id="5c7def7e0a26bac297128161b2bb9b2fc279985b"> + <img class="icon" src="examples\extensions\mappy\icon.png"> <img class="icon" src="images/sample-default-icon.png" style="display: none; "> <h2 class="name"> - <a href="#ec97ec20ca2f095d081e39f1565fc12af09ef067">Mappy</a> + <a href="#5c7def7e0a26bac297128161b2bb9b2fc279985b">Mappy</a> </h2> <p class="metadata features">Uses <span> @@ -1757,25 +1767,25 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/mappy/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\mappy\background.html?content-type=text/plain">background.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/mappy/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\mappy\manifest.json?content-type=text/plain">manifest.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/mappy/mappy_content_script.js?content-type=text/plain">mappy_content_script.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\mappy\mappy_content_script.js?content-type=text/plain">mappy_content_script.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/mappy/popup.html?content-type=text/plain">popup.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\mappy\popup.html?content-type=text/plain">popup.html</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/mappy/">Browse source</a> - - <a href="examples/extensions/mappy.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\mappy\">Browse source</a> + - <a href="examples\extensions\mappy.zip">Download source</a> </div> -</div><div class="sample" id="b2f5f8a790e16f091a7e4e0a39b2d0a6d32e3a6d"> - <img class="icon" src="examples/api/windows/merge_windows/merge_windows_128.png"> +</div><div class="sample" id="d72b4e8576fb00ad176957738099c930cffcfb9e"> + <img class="icon" src="examples\api\windows\merge_windows\merge_windows_128.png"> <img class="icon" src="images/sample-default-icon.png" style="display: none; "> <h2 class="name"> - <a href="#b2f5f8a790e16f091a7e4e0a39b2d0a6d32e3a6d">Merge Windows</a> + <a href="#d72b4e8576fb00ad176957738099c930cffcfb9e">Merge Windows</a> </h2> <p class="metadata features">Uses <span> @@ -1812,21 +1822,21 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/windows/merge_windows/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\windows\merge_windows\background.html?content-type=text/plain">background.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/windows/merge_windows/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\windows\merge_windows\manifest.json?content-type=text/plain">manifest.json</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/windows/merge_windows/">Browse source</a> - - <a href="examples/api/windows/merge_windows.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\windows\merge_windows\">Browse source</a> + - <a href="examples\api\windows\merge_windows.zip">Download source</a> </div> -</div><div class="sample" id="51a83d2ba3a32e3ff1bdb624d4e18ccec4c4038e"> +</div><div class="sample" id="af975d20117c15a36dff66ef5a1ebca92f653969"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#51a83d2ba3a32e3ff1bdb624d4e18ccec4c4038e">Message Timer</a> + <a href="#af975d20117c15a36dff66ef5a1ebca92f653969">Message Timer</a> </h2> <p class="metadata features">Uses <span> @@ -1861,23 +1871,23 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/messaging/timer/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\messaging\timer\manifest.json?content-type=text/plain">manifest.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/messaging/timer/page.js?content-type=text/plain">page.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\messaging\timer\page.js?content-type=text/plain">page.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/messaging/timer/popup.html?content-type=text/plain">popup.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\messaging\timer\popup.html?content-type=text/plain">popup.html</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/messaging/timer/">Browse source</a> - - <a href="examples/api/messaging/timer.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\messaging\timer\">Browse source</a> + - <a href="examples\api\messaging\timer.zip">Download source</a> </div> -</div><div class="sample" id="4f6785ec4f937add6728615682dd37c9a42d9548"> +</div><div class="sample" id="7772f091557a50889effa6e5b19e83b4cf80399b"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#4f6785ec4f937add6728615682dd37c9a42d9548">My Bookmarks</a> + <a href="#7772f091557a50889effa6e5b19e83b4cf80399b">My Bookmarks</a> </h2> <p class="metadata features">Uses <span> @@ -1915,21 +1925,21 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/bookmarks/basic/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\bookmarks\basic\manifest.json?content-type=text/plain">manifest.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/bookmarks/basic/popup.html?content-type=text/plain">popup.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\bookmarks\basic\popup.html?content-type=text/plain">popup.html</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/bookmarks/basic/">Browse source</a> - - <a href="examples/api/bookmarks/basic.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\bookmarks\basic\">Browse source</a> + - <a href="examples\api\bookmarks\basic.zip">Download source</a> </div> -</div><div class="sample" id="597015d3bcce3da693b02314afd607bec4f55291"> - <img class="icon" src="examples/extensions/news_a11y/news_icon.png"> +</div><div class="sample" id="28c933f585b0903a56f9a16658aa26cf61f9da0f"> + <img class="icon" src="examples\extensions\news_a11y\news_icon.png"> <img class="icon" src="images/sample-default-icon.png" style="display: none; "> <h2 class="name"> - <a href="#597015d3bcce3da693b02314afd607bec4f55291">News Reader</a> + <a href="#28c933f585b0903a56f9a16658aa26cf61f9da0f">News Reader</a> </h2> <p class="metadata features">Uses <span> @@ -1954,21 +1964,21 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news_a11y/feed.html?content-type=text/plain">feed.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\news_a11y\feed.html?content-type=text/plain">feed.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news_a11y/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\news_a11y\manifest.json?content-type=text/plain">manifest.json</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news_a11y/">Browse source</a> - - <a href="examples/extensions/news_a11y.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\news_a11y\">Browse source</a> + - <a href="examples\extensions\news_a11y.zip">Download source</a> </div> -</div><div class="sample" id="6444e5c8ae112a6a433909c5e770669cd16e2e5f"> - <img class="icon" src="examples/extensions/news_i18n/news_icon.png"> +</div><div class="sample" id="80e7eac29801029c81ecaabb7c7021bbd0ceea88"> + <img class="icon" src="examples\extensions\news_i18n\news_icon.png"> <img class="icon" src="images/sample-default-icon.png" style="display: none; "> <h2 class="name"> - <a href="#6444e5c8ae112a6a433909c5e770669cd16e2e5f">News Reader</a> + <a href="#80e7eac29801029c81ecaabb7c7021bbd0ceea88">News Reader</a> </h2> <p class="metadata features">Uses <span> @@ -1995,27 +2005,27 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news_i18n/_locales/en/messages.json?content-type=text/plain">_locales/en/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\news_i18n\_locales\en\messages.json?content-type=text/plain">_locales\en\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news_i18n/_locales/es/messages.json?content-type=text/plain">_locales/es/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\news_i18n\_locales\es\messages.json?content-type=text/plain">_locales\es\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news_i18n/_locales/sr/messages.json?content-type=text/plain">_locales/sr/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\news_i18n\_locales\sr\messages.json?content-type=text/plain">_locales\sr\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news_i18n/feed.html?content-type=text/plain">feed.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\news_i18n\feed.html?content-type=text/plain">feed.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news_i18n/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\news_i18n\manifest.json?content-type=text/plain">manifest.json</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news_i18n/">Browse source</a> - - <a href="examples/extensions/news_i18n.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\news_i18n\">Browse source</a> + - <a href="examples\extensions\news_i18n.zip">Download source</a> </div> -</div><div class="sample" id="3aea027164cb9b732ba4a8c51cb93708891726ef"> - <img class="icon" src="examples/extensions/news/images/news_icon.png"> +</div><div class="sample" id="e9e5f15da193c45aad4d49ced748dfbbd6c904b3"> + <img class="icon" src="examples\extensions\news\images/news_icon.png"> <img class="icon" src="images/sample-default-icon.png" style="display: none; "> <h2 class="name"> - <a href="#3aea027164cb9b732ba4a8c51cb93708891726ef">News Reader (by Google)</a> + <a href="#e9e5f15da193c45aad4d49ced748dfbbd6c904b3">News Reader (by Google)</a> </h2> <p class="metadata features">Uses <span> @@ -2050,37 +2060,37 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news/_locales/en/messages.json?content-type=text/plain">_locales/en/messages.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\news\_locales\en\messages.json?content-type=text/plain">_locales\en\messages.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news/css/feed.css?content-type=text/plain">css/feed.css</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\news\css\feed.css?content-type=text/plain">css\feed.css</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news/css/options.css?content-type=text/plain">css/options.css</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\news\css\options.css?content-type=text/plain">css\options.css</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news/javascript/feed.js?content-type=text/plain">javascript/feed.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\news\javascript\feed.js?content-type=text/plain">javascript\feed.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news/javascript/options.js?content-type=text/plain">javascript/options.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\news\javascript\options.js?content-type=text/plain">javascript\options.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news/javascript/util.js?content-type=text/plain">javascript/util.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\news\javascript\util.js?content-type=text/plain">javascript\util.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\news\manifest.json?content-type=text/plain">manifest.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news/views/background.html?content-type=text/plain">views/background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\news\views\background.html?content-type=text/plain">views\background.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news/views/feed.html?content-type=text/plain">views/feed.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\news\views\feed.html?content-type=text/plain">views\feed.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news/views/options.html?content-type=text/plain">views/options.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\news\views\options.html?content-type=text/plain">views\options.html</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/news/">Browse source</a> - - <a href="examples/extensions/news.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\news\">Browse source</a> + - <a href="examples\extensions\news.zip">Download source</a> </div> -</div><div class="sample" id="f799e26ceef2367cf836f24bcb47df4398b0df58"> - <img class="icon" src="examples/api/notifications/128.png"> +</div><div class="sample" id="324e557c216dd6edbeb0112ed53d55a05b5e6112"> + <img class="icon" src="examples\api\notifications\128.png"> <img class="icon" src="images/sample-default-icon.png" style="display: none; "> <h2 class="name"> - <a href="#f799e26ceef2367cf836f24bcb47df4398b0df58">Notification Demo</a> + <a href="#324e557c216dd6edbeb0112ed53d55a05b5e6112">Notification Demo</a> </h2> <p class="metadata features">Uses <span> @@ -2108,25 +2118,25 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/notifications/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\notifications\background.html?content-type=text/plain">background.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/notifications/error.html?content-type=text/plain">error.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\notifications\error.html?content-type=text/plain">error.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/notifications/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\notifications\manifest.json?content-type=text/plain">manifest.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/notifications/options.html?content-type=text/plain">options.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\notifications\options.html?content-type=text/plain">options.html</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/notifications/">Browse source</a> - - <a href="examples/api/notifications.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\notifications\">Browse source</a> + - <a href="examples\api\notifications.zip">Download source</a> </div> -</div><div class="sample" id="e787b322bddbc6289bb31b7d7550b1bf6456a80b"> +</div><div class="sample" id="85a9f4cfd3645dfc4d1d90cc559261b689803626"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#e787b322bddbc6289bb31b7d7550b1bf6456a80b">Omnibox Example</a> + <a href="#85a9f4cfd3645dfc4d1d90cc559261b689803626">Omnibox Example</a> </h2> <p class="metadata features">Uses <span> @@ -2147,21 +2157,21 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/omnibox/simple-example/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\omnibox\simple-example\background.html?content-type=text/plain">background.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/omnibox/simple-example/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\omnibox\simple-example\manifest.json?content-type=text/plain">manifest.json</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/omnibox/simple-example/">Browse source</a> - - <a href="examples/api/omnibox/simple-example.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\omnibox\simple-example\">Browse source</a> + - <a href="examples\api\omnibox\simple-example.zip">Download source</a> </div> -</div><div class="sample" id="8d0a50b57c26bb498be592e871001ffed91541b4"> - <img class="icon" src="examples/api/pageAction/pageaction_by_content/sandwich-128.png"> +</div><div class="sample" id="56bbb002845c9ada93807b2f83d51447adf146fd"> + <img class="icon" src="examples\api\pageAction\pageaction_by_content\sandwich-128.png"> <img class="icon" src="images/sample-default-icon.png" style="display: none; "> <h2 class="name"> - <a href="#8d0a50b57c26bb498be592e871001ffed91541b4">Page action by content</a> + <a href="#56bbb002845c9ada93807b2f83d51447adf146fd">Page action by content</a> </h2> <p class="metadata features">Uses <span> @@ -2187,23 +2197,23 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/pageAction/pageaction_by_content/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\pageAction\pageaction_by_content\background.html?content-type=text/plain">background.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/pageAction/pageaction_by_content/contentscript.js?content-type=text/plain">contentscript.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\pageAction\pageaction_by_content\contentscript.js?content-type=text/plain">contentscript.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/pageAction/pageaction_by_content/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\pageAction\pageaction_by_content\manifest.json?content-type=text/plain">manifest.json</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/pageAction/pageaction_by_content/">Browse source</a> - - <a href="examples/api/pageAction/pageaction_by_content.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\pageAction\pageaction_by_content\">Browse source</a> + - <a href="examples\api\pageAction\pageaction_by_content.zip">Download source</a> </div> -</div><div class="sample" id="80b86ccc6e8520660fa591caa565826f0ed1b12c"> - <img class="icon" src="examples/api/pageAction/pageaction_by_url/icon-128.png"> +</div><div class="sample" id="65afad56921c30f207a30f5ecf929e06b712f552"> + <img class="icon" src="examples\api\pageAction\pageaction_by_url\icon-128.png"> <img class="icon" src="images/sample-default-icon.png" style="display: none; "> <h2 class="name"> - <a href="#80b86ccc6e8520660fa591caa565826f0ed1b12c">Page action by URL</a> + <a href="#65afad56921c30f207a30f5ecf929e06b712f552">Page action by URL</a> </h2> <p class="metadata features">Uses <span> @@ -2230,21 +2240,21 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/pageAction/pageaction_by_url/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\pageAction\pageaction_by_url\background.html?content-type=text/plain">background.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/pageAction/pageaction_by_url/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\pageAction\pageaction_by_url\manifest.json?content-type=text/plain">manifest.json</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/pageAction/pageaction_by_url/">Browse source</a> - - <a href="examples/api/pageAction/pageaction_by_url.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\pageAction\pageaction_by_url\">Browse source</a> + - <a href="examples\api\pageAction\pageaction_by_url.zip">Download source</a> </div> -</div><div class="sample" id="d74c3c18a1c1dd18b035149105a306f837c8823e"> +</div><div class="sample" id="7446de67bf18dc34b5ff0fb4e1d9d7d166339bb9"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#d74c3c18a1c1dd18b035149105a306f837c8823e">Page Benchmarker</a> + <a href="#7446de67bf18dc34b5ff0fb4e1d9d7d166339bb9">Page Benchmarker</a> </h2> <p class="metadata features">Uses <span> @@ -2306,53 +2316,53 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/benchmark/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\benchmark\background.html?content-type=text/plain">background.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/benchmark/jquery/jquery-1.4.2.min.js?content-type=text/plain">jquery/jquery-1.4.2.min.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\benchmark\jquery\jquery-1.4.2.min.js?content-type=text/plain">jquery\jquery-1.4.2.min.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/benchmark/jquery/jquery-ui-1.8.4.custom.min.js?content-type=text/plain">jquery/jquery-ui-1.8.4.custom.min.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\benchmark\jquery\jquery-ui-1.8.4.custom.min.js?content-type=text/plain">jquery\jquery-ui-1.8.4.custom.min.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/benchmark/jquery/jquery.client.js?content-type=text/plain">jquery/jquery.client.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\benchmark\jquery\jquery.client.js?content-type=text/plain">jquery\jquery.client.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/benchmark/jquery/jquery.flot.dashes.js?content-type=text/plain">jquery/jquery.flot.dashes.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\benchmark\jquery\jquery.flot.dashes.js?content-type=text/plain">jquery\jquery.flot.dashes.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/benchmark/jquery/jquery.flot.js?content-type=text/plain">jquery/jquery.flot.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\benchmark\jquery\jquery.flot.js?content-type=text/plain">jquery\jquery.flot.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/benchmark/jquery/jquery.flot.min.js?content-type=text/plain">jquery/jquery.flot.min.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\benchmark\jquery\jquery.flot.min.js?content-type=text/plain">jquery\jquery.flot.min.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/benchmark/jquery/jquery.flot.navigate.js?content-type=text/plain">jquery/jquery.flot.navigate.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\benchmark\jquery\jquery.flot.navigate.js?content-type=text/plain">jquery\jquery.flot.navigate.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/benchmark/jquery/jquery.flot.valuelabels.js?content-type=text/plain">jquery/jquery.flot.valuelabels.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\benchmark\jquery\jquery.flot.valuelabels.js?content-type=text/plain">jquery\jquery.flot.valuelabels.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/benchmark/jst/jsevalcontext.js?content-type=text/plain">jst/jsevalcontext.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\benchmark\jst\jsevalcontext.js?content-type=text/plain">jst\jsevalcontext.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/benchmark/jst/jstemplate.js?content-type=text/plain">jst/jstemplate.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\benchmark\jst\jstemplate.js?content-type=text/plain">jst\jstemplate.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/benchmark/jst/jstemplate_test.js?content-type=text/plain">jst/jstemplate_test.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\benchmark\jst\jstemplate_test.js?content-type=text/plain">jst\jstemplate_test.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/benchmark/jst/util.js?content-type=text/plain">jst/util.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\benchmark\jst\util.js?content-type=text/plain">jst\util.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/benchmark/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\benchmark\manifest.json?content-type=text/plain">manifest.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/benchmark/options.html?content-type=text/plain">options.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\benchmark\options.html?content-type=text/plain">options.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/benchmark/script.js?content-type=text/plain">script.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\benchmark\script.js?content-type=text/plain">script.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/benchmark/util/sorttable.js?content-type=text/plain">util/sorttable.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\benchmark\util\sorttable.js?content-type=text/plain">util\sorttable.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/benchmark/util/table2CSV.js?content-type=text/plain">util/table2CSV.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\benchmark\util\table2CSV.js?content-type=text/plain">util\table2CSV.js</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/benchmark/">Browse source</a> - - <a href="examples/extensions/benchmark.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\benchmark\">Browse source</a> + - <a href="examples\extensions\benchmark.zip">Download source</a> </div> -</div><div class="sample" id="e6ae17ab4ccfd7e059c8c01f25760ca5d894c7fd"> +</div><div class="sample" id="a9ea9e35b2e9990e488afeb97407655ea14fc8dc"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#e6ae17ab4ccfd7e059c8c01f25760ca5d894c7fd">Print this page</a> + <a href="#a9ea9e35b2e9990e488afeb97407655ea14fc8dc">Print this page</a> </h2> <p class="metadata features">Uses <span> @@ -2379,21 +2389,21 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/browserAction/print/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\browserAction\print\background.html?content-type=text/plain">background.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/browserAction/print/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\browserAction\print\manifest.json?content-type=text/plain">manifest.json</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/browserAction/print/">Browse source</a> - - <a href="examples/api/browserAction/print.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\browserAction\print\">Browse source</a> + - <a href="examples\api\browserAction\print.zip">Download source</a> </div> -</div><div class="sample" id="beff6ecd9677dea0a7c648c5042165b48bb66f09"> +</div><div class="sample" id="455ec3784d8094b318eac572bc092ec07c5286b0"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#beff6ecd9677dea0a7c648c5042165b48bb66f09">Process Monitor</a> + <a href="#455ec3784d8094b318eac572bc092ec07c5286b0">Process Monitor</a> </h2> <p class="metadata features">Uses <span> @@ -2421,21 +2431,21 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/processes/process_monitor/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\processes\process_monitor\manifest.json?content-type=text/plain">manifest.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/processes/process_monitor/popup.html?content-type=text/plain">popup.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\processes\process_monitor\popup.html?content-type=text/plain">popup.html</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/processes/process_monitor/">Browse source</a> - - <a href="examples/api/processes/process_monitor.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\processes\process_monitor\">Browse source</a> + - <a href="examples\api\processes\process_monitor.zip">Download source</a> </div> -</div><div class="sample" id="56a8d2ac24ca7bba78fd88ad57f43fc13c784497"> - <img class="icon" src="examples/extensions/oauth_contacts/img/icon-128.png"> +</div><div class="sample" id="545d6989740a0e7f57a9751c2ebc0e250053a08f"> + <img class="icon" src="examples\extensions\oauth_contacts\img/icon-128.png"> <img class="icon" src="images/sample-default-icon.png" style="display: none; "> <h2 class="name"> - <a href="#56a8d2ac24ca7bba78fd88ad57f43fc13c784497">Sample - OAuth Contacts</a> + <a href="#545d6989740a0e7f57a9751c2ebc0e250053a08f">Sample - OAuth Contacts</a> </h2> <p class="metadata features">Uses <span> @@ -2476,29 +2486,29 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/oauth_contacts/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\oauth_contacts\background.html?content-type=text/plain">background.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/oauth_contacts/chrome_ex_oauth.html?content-type=text/plain">chrome_ex_oauth.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\oauth_contacts\chrome_ex_oauth.html?content-type=text/plain">chrome_ex_oauth.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/oauth_contacts/chrome_ex_oauth.js?content-type=text/plain">chrome_ex_oauth.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\oauth_contacts\chrome_ex_oauth.js?content-type=text/plain">chrome_ex_oauth.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/oauth_contacts/chrome_ex_oauthsimple.js?content-type=text/plain">chrome_ex_oauthsimple.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\oauth_contacts\chrome_ex_oauthsimple.js?content-type=text/plain">chrome_ex_oauthsimple.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/oauth_contacts/contacts.html?content-type=text/plain">contacts.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\oauth_contacts\contacts.html?content-type=text/plain">contacts.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/oauth_contacts/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\oauth_contacts\manifest.json?content-type=text/plain">manifest.json</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/extensions/oauth_contacts/">Browse source</a> - - <a href="examples/extensions/oauth_contacts.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\extensions\oauth_contacts\">Browse source</a> + - <a href="examples\extensions\oauth_contacts.zip">Download source</a> </div> -</div><div class="sample" id="38f6e1e17756ede38b1364c7114a738ca717dcbb"> - <img class="icon" src="examples/api/infobars/sandwichbar/sandwich-128.png"> +</div><div class="sample" id="39a3d4c4282ee5090652938decfb6df79b626151"> + <img class="icon" src="examples\api\infobars\sandwichbar\sandwich-128.png"> <img class="icon" src="images/sample-default-icon.png" style="display: none; "> <h2 class="name"> - <a href="#38f6e1e17756ede38b1364c7114a738ca717dcbb">SandwichBar</a> + <a href="#39a3d4c4282ee5090652938decfb6df79b626151">SandwichBar</a> </h2> <p class="metadata features">Uses <span> @@ -2524,25 +2534,25 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/infobars/sandwichbar/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\infobars\sandwichbar\background.html?content-type=text/plain">background.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/infobars/sandwichbar/contentscript.js?content-type=text/plain">contentscript.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\infobars\sandwichbar\contentscript.js?content-type=text/plain">contentscript.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/infobars/sandwichbar/infobar.html?content-type=text/plain">infobar.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\infobars\sandwichbar\infobar.html?content-type=text/plain">infobar.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/infobars/sandwichbar/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\infobars\sandwichbar\manifest.json?content-type=text/plain">manifest.json</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/infobars/sandwichbar/">Browse source</a> - - <a href="examples/api/infobars/sandwichbar.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\infobars\sandwichbar\">Browse source</a> + - <a href="examples\api\infobars\sandwichbar.zip">Download source</a> </div> -</div><div class="sample" id="fc89b35755483af30b66cd72cefa34a43a3e8312"> +</div><div class="sample" id="364415e46171be6479a095b214eab9783a4648d2"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#fc89b35755483af30b66cd72cefa34a43a3e8312">Show Tabs in Process</a> + <a href="#364415e46171be6479a095b214eab9783a4648d2">Show Tabs in Process</a> </h2> <p class="metadata features">Uses <span> @@ -2584,21 +2594,21 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/processes/show_tabs/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\processes\show_tabs\manifest.json?content-type=text/plain">manifest.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/processes/show_tabs/popup.html?content-type=text/plain">popup.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\processes\show_tabs\popup.html?content-type=text/plain">popup.html</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/processes/show_tabs/">Browse source</a> - - <a href="examples/api/processes/show_tabs.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\processes\show_tabs\">Browse source</a> + - <a href="examples\api\processes\show_tabs.zip">Download source</a> </div> -</div><div class="sample" id="230463f2d5c3d4d0ca13c230e1f00f2aae0a8a64"> +</div><div class="sample" id="ad0d399dfc6d92af6ee9b759d7792a0d0bb85370"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#230463f2d5c3d4d0ca13c230e1f00f2aae0a8a64">Tab Inspector</a> + <a href="#ad0d399dfc6d92af6ee9b759d7792a0d0bb85370">Tab Inspector</a> </h2> <p class="metadata features">Uses <span> @@ -2673,25 +2683,25 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/tabs/inspector/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\tabs\inspector\background.html?content-type=text/plain">background.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/tabs/inspector/jstemplate_compiled.js?content-type=text/plain">jstemplate_compiled.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\tabs\inspector\jstemplate_compiled.js?content-type=text/plain">jstemplate_compiled.js</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/tabs/inspector/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\tabs\inspector\manifest.json?content-type=text/plain">manifest.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/tabs/inspector/tabs_api.html?content-type=text/plain">tabs_api.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\tabs\inspector\tabs_api.html?content-type=text/plain">tabs_api.html</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/tabs/inspector/">Browse source</a> - - <a href="examples/api/tabs/inspector.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\tabs\inspector\">Browse source</a> + - <a href="examples\api\tabs\inspector.zip">Download source</a> </div> -</div><div class="sample" id="e1697cacebad05218798bf3e8a0f724517f0e8c3"> +</div><div class="sample" id="1e28bcf89e80466f155ab3a01a76cf5f60cb4104"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#e1697cacebad05218798bf3e8a0f724517f0e8c3">Test Screenshot Extension</a> + <a href="#1e28bcf89e80466f155ab3a01a76cf5f60cb4104">Test Screenshot Extension</a> </h2> <p class="metadata features">Uses <span> @@ -2726,25 +2736,25 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/tabs/screenshot/background.html?content-type=text/plain">background.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\tabs\screenshot\background.html?content-type=text/plain">background.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/tabs/screenshot/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\tabs\screenshot\manifest.json?content-type=text/plain">manifest.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/tabs/screenshot/screenshot.html?content-type=text/plain">screenshot.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\tabs\screenshot\screenshot.html?content-type=text/plain">screenshot.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/tabs/screenshot/screenshot.js?content-type=text/plain">screenshot.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\tabs\screenshot\screenshot.js?content-type=text/plain">screenshot.js</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/tabs/screenshot/">Browse source</a> - - <a href="examples/api/tabs/screenshot.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\tabs\screenshot\">Browse source</a> + - <a href="examples\api\tabs\screenshot.zip">Download source</a> </div> -</div><div class="sample" id="b3de91ab04b7d7a2670ca7ee9d740eb42cead0b6"> +</div><div class="sample" id="7b375c0f2c88517b42a5a341ac77e0762b481233"> <img class="icon" style="display: none; "> <img class="icon" src="images/sample-default-icon.png"> <h2 class="name"> - <a href="#b3de91ab04b7d7a2670ca7ee9d740eb42cead0b6">Typed URL History</a> + <a href="#7b375c0f2c88517b42a5a341ac77e0762b481233">Typed URL History</a> </h2> <p class="metadata features">Uses <span> @@ -2773,17 +2783,17 @@ <div class="sourcefiles"><strong>Source files:</strong> <ul> <li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/history/showHistory/manifest.json?content-type=text/plain">manifest.json</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\history\showHistory\manifest.json?content-type=text/plain">manifest.json</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/history/showHistory/typedUrls.html?content-type=text/plain">typedUrls.html</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\history\showHistory\typedUrls.html?content-type=text/plain">typedUrls.html</a></code> </li><li> - <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/history/showHistory/typedUrls.js?content-type=text/plain">typedUrls.js</a></code> + <code><a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\history\showHistory\typedUrls.js?content-type=text/plain">typedUrls.js</a></code> </li> </ul> </div> <div> - <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples/api/history/showHistory/">Browse source</a> - - <a href="examples/api/history/showHistory.zip">Download source</a> + <a target="_blank" href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/common/extensions/docs/examples\api\history\showHistory\">Browse source</a> + - <a href="examples\api\history\showHistory.zip">Download source</a> </div> </div> @@ -2816,8 +2826,8 @@ </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -2892,10 +2902,9 @@ </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -2913,14 +2922,15 @@ </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/samples.json b/chrome/common/extensions/docs/samples.json index b060a44..eacba16 100644 --- a/chrome/common/extensions/docs/samples.json +++ b/chrome/common/extensions/docs/samples.json @@ -41,6 +41,8 @@ "chrome.experimental.infobars.show": "experimental.infobars.html#method-show", "chrome.experimental.processes.getProcessIdForTab": "experimental.processes.html#method-getProcessIdForTab", "chrome.experimental.processes.onUpdated": "experimental.processes.html#event-onUpdated", + "chrome.experimental.proxy.getCurrentProxySettings": "experimental.proxy.html#method-getCurrentProxySettings", + "chrome.experimental.proxy.removeCustomProxySettings": "experimental.proxy.html#method-removeCustomProxySettings", "chrome.experimental.proxy.useCustomProxySettings": "experimental.proxy.html#method-useCustomProxySettings", "chrome.experimental.sidebar.collapse": "experimental.sidebar.html#method-collapse", "chrome.experimental.sidebar.expand": "experimental.sidebar.html#method-expand", @@ -52,12 +54,19 @@ "chrome.experimental.sidebar.setIcon": "experimental.sidebar.html#method-setIcon", "chrome.experimental.sidebar.setTitle": "experimental.sidebar.html#method-setTitle", "chrome.experimental.sidebar.show": "experimental.sidebar.html#method-show", + "chrome.experimental.tts.isSpeaking": "experimental.tts.html#method-isSpeaking", + "chrome.experimental.tts.onSpeak": "experimental.tts.html#event-onSpeak", + "chrome.experimental.tts.onStop": "experimental.tts.html#event-onStop", + "chrome.experimental.tts.speak": "experimental.tts.html#method-speak", + "chrome.experimental.tts.speakCompleted": "experimental.tts.html#method-speakCompleted", + "chrome.experimental.tts.stop": "experimental.tts.html#method-stop", "chrome.experimental.webNavigation.onBeforeNavigate": "experimental.webNavigation.html#event-onBeforeNavigate", "chrome.experimental.webNavigation.onBeforeRetarget": "experimental.webNavigation.html#event-onBeforeRetarget", "chrome.experimental.webNavigation.onCommitted": "experimental.webNavigation.html#event-onCommitted", "chrome.experimental.webNavigation.onCompleted": "experimental.webNavigation.html#event-onCompleted", "chrome.experimental.webNavigation.onDOMContentLoaded": "experimental.webNavigation.html#event-onDOMContentLoaded", "chrome.experimental.webNavigation.onErrorOccurred": "experimental.webNavigation.html#event-onErrorOccurred", + "chrome.experimental.webRequest.addEventListener": "experimental.webRequest.html#method-addEventListener", "chrome.experimental.webRequest.onBeforeRedirect": "experimental.webRequest.html#event-onBeforeRedirect", "chrome.experimental.webRequest.onBeforeRequest": "experimental.webRequest.html#event-onBeforeRequest", "chrome.experimental.webRequest.onCompleted": "experimental.webRequest.html#event-onCompleted", @@ -154,11 +163,11 @@ "tabs" ], "icon": null, - "id": "0262260daf0c8f7b28feff2ef23b05e7abf9d1e0", + "id": "4da084813a9c0f3de28821a1c8d2504f5f7bcbad", "name": "A browser action which changes its icon when clicked.", - "path": "examples/api/browserAction/set_icon_path/", + "path": "examples\\api\\browserAction\\set_icon_path\\", "protocols": [ - "http://" + "http:\/\/" ], "search_string": "A BROWSER ACTION WHICH CHANGES ITS ICON WHEN CLICKED. BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETICON", "source_files": [ @@ -166,7 +175,7 @@ "manifest.json" ], "source_hash": "c5752555642e89340c57657b48440b0dcd74ee99", - "zip_path": "examples/api/browserAction/set_icon_path.zip" + "zip_path": "examples\\api\\browserAction\\set_icon_path.zip" }, { "api_calls": [ @@ -179,12 +188,12 @@ "tabs" ], "icon": null, - "id": "ea2894c41cb8e80a4433a3e6c5772dadce9be90d", + "id": "0569ec913dfd1aa4fad58fff04af99b0de7ec4b6", "name": "A browser action with a popup that changes the page color.", - "path": "examples/api/browserAction/set_page_color/", + "path": "examples\\api\\browserAction\\set_page_color\\", "protocols": [ - "http://", - "https://" + "http:\/\/", + "https:\/\/" ], "search_string": "A BROWSER ACTION WITH A POPUP THAT CHANGES THE PAGE COLOR. BROWSER_ACTION POPUP TABS CHROME.TABS.EXECUTESCRIPT", "source_files": [ @@ -192,7 +201,7 @@ "popup.html" ], "source_hash": "c8d14b6893e75a62f3bd150d5d2cc5bb785bc411", - "zip_path": "examples/api/browserAction/set_page_color.zip" + "zip_path": "examples\\api\\browserAction\\set_page_color.zip" }, { "api_calls": [ @@ -208,11 +217,11 @@ "tabs" ], "icon": null, - "id": "ede3c47b7757245be42ec33fd5ca63df4b490066", + "id": "a02f64d5e8c8f96efb45b26c11bfa2320deddd36", "name": "A browser action with no icon that makes the page red", - "path": "examples/api/browserAction/make_page_red/", + "path": "examples\\api\\browserAction\\make_page_red\\", "protocols": [ - "http://" + "http:\/\/" ], "search_string": "A BROWSER ACTION WITH NO ICON THAT MAKES THE PAGE RED BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.TABS.EXECUTESCRIPT", "source_files": [ @@ -220,7 +229,7 @@ "manifest.json" ], "source_hash": "dfbb05ead54a0228a6d2f591ce1038d5c625249a", - "zip_path": "examples/api/browserAction/make_page_red.zip" + "zip_path": "examples\\api\\browserAction\\make_page_red.zip" }, { "api_calls": [ @@ -233,20 +242,20 @@ "popup" ], "icon": null, - "id": "fbf0aa1a09a15ff8cc4fc7de4fd176d6c663d07a", + "id": "ebed3a237b5606a154cfc0e6326821154607d388", "name": "AcceptLanguage", - "path": "examples/api/i18n/getMessage/", + "path": "examples\\api\\i18n\\getMessage\\", "protocols": [], "search_string": "ACCEPTLANGUAGE RETURNS ACCEPT LANGUAGES OF THE BROWSER BROWSER_ACTION POPUP CHROME.I18N.GETACCEPTLANGUAGES CHROME.I18N.GETMESSAGE", "source_files": [ - "_locales/en_US/messages.json", - "_locales/es/messages.json", - "_locales/sr/messages.json", + "_locales\\en_US\\messages.json", + "_locales\\es\\messages.json", + "_locales\\sr\\messages.json", "manifest.json", "popup.html" ], "source_hash": "67f203e2773eebf401d0aa0a9709d961e506d875", - "zip_path": "examples/api/i18n/getMessage.zip" + "zip_path": "examples\\api\\i18n\\getMessage.zip" }, { "api_calls": [ @@ -266,9 +275,9 @@ "tabs" ], "icon": null, - "id": "9a6e4ec46997fb92b324974afa08a3d007e2537f", + "id": "2f7777c80368bb0a8caf057dffaadd5feed7e9ee", "name": "Animated Page Action", - "path": "examples/api/pageAction/set_icon/", + "path": "examples\\api\\pageAction\\set_icon\\", "protocols": [], "search_string": "ANIMATED PAGE ACTION THIS EXTENSION ADDS AN ANIMATED BROWSER ACTION TO THE TOOLBAR. BACKGROUND_PAGE PAGE_ACTION TABS CHROME.PAGEACTION.HIDE CHROME.PAGEACTION.ONCLICKED CHROME.PAGEACTION.SETICON CHROME.PAGEACTION.SETTITLE CHROME.PAGEACTION.SHOW CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONSELECTIONCHANGED", "source_files": [ @@ -276,7 +285,7 @@ "manifest.json" ], "source_hash": "9d5e9f8fd525c6d02fe03e1843041f5b0f94f690", - "zip_path": "examples/api/pageAction/set_icon.zip" + "zip_path": "examples\\api\\pageAction\\set_icon.zip" }, { "api_calls": [ @@ -292,9 +301,9 @@ "management" ], "icon": null, - "id": "a1f7cf79dd555b04fa8d603247a040e644996293", + "id": "4da5aeb0840b36af753e694f2e81c90620494688", "name": "App Launcher", - "path": "examples/extensions/app_launcher/", + "path": "examples\\extensions\\app_launcher\\", "protocols": [], "search_string": "APP LAUNCHER BROWSER_ACTION MANAGEMENT CHROME.EXTENSION.GETURL CHROME.MANAGEMENT.GET CHROME.MANAGEMENT.GETALL CHROME.MANAGEMENT.LAUNCHAPP CHROME.TABS.CREATE", "source_files": [ @@ -304,7 +313,7 @@ "popup.js" ], "source_hash": "4cb1348cfca9c990117d52290f93eb5fc5081bc2", - "zip_path": "examples/extensions/app_launcher.zip" + "zip_path": "examples\\extensions\\app_launcher.zip" }, { "api_calls": [], @@ -313,9 +322,9 @@ "chrome_url_overrides" ], "icon": null, - "id": "9747e3d6a3eab39bc7c17f11a80573c62d44c7e5", + "id": "63349d2a4f5ec8f315a05fc9b1cab181ad546fd2", "name": "Blank new tab page", - "path": "examples/api/override/blank_ntp/", + "path": "examples\\api\\override\\blank_ntp\\", "protocols": [], "search_string": "BLANK NEW TAB PAGE CHROME_URL_OVERRIDES", "source_files": [ @@ -323,7 +332,7 @@ "manifest.json" ], "source_hash": "477acf6d15e3fa252e6307e156707538b61c86db", - "zip_path": "examples/api/override/blank_ntp.zip" + "zip_path": "examples\\api\\override\\blank_ntp.zip" }, { "api_calls": [ @@ -353,12 +362,12 @@ "tabs" ], "icon": "icon.png", - "id": "903e7277139e1e6caec123d3319cab295d8d1b3a", + "id": "4c45b5015d2ca5f9053514ac70ff3acc3bca1f76", "name": "Chrome Sounds", - "path": "examples/extensions/fx/", + "path": "examples\\extensions\\fx\\", "protocols": [ - "http://", - "https://" + "http:\/\/", + "https:\/\/" ], "search_string": "CHROME SOUNDS ENJOY A MORE MAGICAL AND IMMERSIVE EXPERIENCE WHEN BROWSING THE WEB USING THE POWER OF SOUND. BACKGROUND_PAGE BOOKMARKS OPTIONS_PAGE TABS CHROME.BOOKMARKS.ONCREATED CHROME.BOOKMARKS.ONMOVED CHROME.BOOKMARKS.ONREMOVED CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST CHROME.TABS.GET CHROME.TABS.ONATTACHED CHROME.TABS.ONCREATED CHROME.TABS.ONDETACHED CHROME.TABS.ONMOVED CHROME.TABS.ONREMOVED CHROME.TABS.ONSELECTIONCHANGED CHROME.TABS.ONUPDATED CHROME.WINDOWS.ONCREATED CHROME.WINDOWS.ONFOCUSCHANGED CHROME.WINDOWS.ONREMOVED", "source_files": [ @@ -368,8 +377,8 @@ "manifest.json", "options.html" ], - "source_hash": "4155e4e6ba7d523ba7bc3b75da352c22e534c3c3", - "zip_path": "examples/extensions/fx.zip" + "source_hash": "800ec3bb17be14c24c3c287c843393211094e40d", + "zip_path": "examples\\extensions\\fx.zip" }, { "api_calls": [ @@ -387,12 +396,12 @@ "popup" ], "icon": "icon.png", - "id": "0e790e035a4a00b6f1def5ef9a7d7be1bce95ab5", + "id": "2f41f968c8b6ddfc078363e305d2b530802a11dd", "name": "Chromium Buildbot Monitor", - "path": "examples/extensions/buildbot/", + "path": "examples\\extensions\\buildbot\\", "protocols": [ - "http://", - "http://" + "http:\/\/", + "http:\/\/" ], "search_string": "CHROMIUM BUILDBOT MONITOR DISPLAYS THE STATUS OF THE CHROMIUM BUILDBOT IN THE TOOLBAR. CLICK TO SEE MORE DETAILED STATUS IN A POPUP. BACKGROUND_PAGE BROWSER_ACTION NOTIFICATIONS OPTIONS_PAGE POPUP CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.BROWSERACTION.SETTITLE CHROME.EXTENSION.GETURL", "source_files": [ @@ -402,7 +411,7 @@ "popup.html" ], "source_hash": "ad985dc5b3e2b40826042be1d7b77c07fadfcc68", - "zip_path": "examples/extensions/buildbot.zip" + "zip_path": "examples\\extensions\\buildbot.zip" }, { "api_calls": [ @@ -421,11 +430,11 @@ "tabs" ], "icon": null, - "id": "ac31228200b41a87982e386cc90d3a6eee4ad885", + "id": "32ff053c4a55b305243c83756304ca7c9d135ed0", "name": "Chromium Search", - "path": "examples/extensions/chrome_search/", + "path": "examples\\extensions\\chrome_search\\", "protocols": [ - "http://" + "http:\/\/" ], "search_string": "CHROMIUM SEARCH ADD SUPPORT TO THE OMNIBOX TO SEARCH THE CHROMIUM SOURCE CODE. BACKGROUND_PAGE TABS CHROME.OMNIBOX.ONINPUTCANCELLED CHROME.OMNIBOX.ONINPUTCHANGED CHROME.OMNIBOX.ONINPUTENTERED CHROME.OMNIBOX.ONINPUTSTARTED CHROME.OMNIBOX.SETDEFAULTSUGGESTION CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.UPDATE", "source_files": [ @@ -433,7 +442,7 @@ "manifest.json" ], "source_hash": "37dd43080094bbe459b0429f1a2b995c33bab7c3", - "zip_path": "examples/extensions/chrome_search.zip" + "zip_path": "examples\\extensions\\chrome_search.zip" }, { "api_calls": [ @@ -451,9 +460,9 @@ "tabs" ], "icon": null, - "id": "7d5d6cf195bc25480256618e360aa38c6e6fba82", + "id": "6484bb796d9aef70aa1026c0edc0799bc7a48b68", "name": "CLD", - "path": "examples/api/i18n/cld/", + "path": "examples\\api\\i18n\\cld\\", "protocols": [], "search_string": "CLD DISPLAYS THE LANGUAGE OF A TAB BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.SETBADGETEXT CHROME.TABS.DETECTLANGUAGE CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONSELECTIONCHANGED CHROME.TABS.ONUPDATED", "source_files": [ @@ -461,7 +470,7 @@ "manifest.json" ], "source_hash": "913694d89e0b081f1ea5ad6f07b60b0141e82394", - "zip_path": "examples/api/i18n/cld.zip" + "zip_path": "examples\\api\\i18n\\cld.zip" }, { "api_calls": [ @@ -473,9 +482,9 @@ "contextMenus" ], "icon": null, - "id": "5d81304a17cf7ac2887484f730fbd2b01e51e166", + "id": "8818cf9ded850b5f0ba7348127526eb00165f202", "name": "Context Menus Sample", - "path": "examples/api/contextMenus/basic/", + "path": "examples\\api\\contextMenus\\basic\\", "protocols": [], "search_string": "CONTEXT MENUS SAMPLE SHOWS SOME OF THE FEATURES OF THE CONTEXT MENUS API BACKGROUND_PAGE CONTEXTMENUS CHROME.CONTEXTMENUS.CREATE", "source_files": [ @@ -483,8 +492,8 @@ "manifest.json", "sample.js" ], - "source_hash": "0e35ce268b3b2cf3d9830e6411c85c5dfef2ffdf", - "zip_path": "examples/api/contextMenus/basic.zip" + "source_hash": "f7240f31b5864b3f6da99cba794b3070cbdf41ef", + "zip_path": "examples\\api\\contextMenus\\basic.zip" }, { "api_calls": [ @@ -507,12 +516,12 @@ "tabs" ], "icon": "cookie.png", - "id": "4daa6becd0899a54776d9cf7f09613ed1a9f4d77", + "id": "ba79d21d1e9a1cf5edebc246b11f667406cb001f", "name": "Cookie API Test Extension", - "path": "examples/api/cookies/", + "path": "examples\\api\\cookies\\", "protocols": [ - "http://", - "https://" + "http:\/\/", + "https:\/\/" ], "search_string": "COOKIE API TEST EXTENSION TESTING COOKIE API BACKGROUND_PAGE BROWSER_ACTION COOKIES TABS CHROME.BROWSERACTION.ONCLICKED CHROME.COOKIES.GET CHROME.COOKIES.GETALL CHROME.COOKIES.ONCHANGED CHROME.COOKIES.REMOVE CHROME.EXTENSION.GETURL CHROME.TABS.CREATE CHROME.TABS.UPDATE CHROME.WINDOWS.GET CHROME.WINDOWS.GETALL", "source_files": [ @@ -520,33 +529,33 @@ "manager.html", "manifest.json" ], - "source_hash": "d0741a5ff0ce9ac38a1be3e6abc46065d74cb498", - "zip_path": "examples/api/cookies.zip" + "source_hash": "6618d2f19b3d02fa21e3980027609a5ced23364a", + "zip_path": "examples\\api\\cookies.zip" }, { "api_calls": [ "chrome.extension.onRequest", "chrome.extension.sendRequest" ], - "description": "Demonstrates a method to make a cross-domain XMLHttpRequest fetch from a content script. This extension fetches the current trending topics from Twitter and inserts them in an overlay at the top of Google News. Visit http://news.google.com to test this extension.", + "description": "Demonstrates a method to make a cross-domain XMLHttpRequest fetch from a content script. This extension fetches the current trending topics from Twitter and inserts them in an overlay at the top of Google News. Visit http:\/\/news.google.com to test this extension.", "features": [ "background_page" ], "icon": "sample-128.png", - "id": "6871d09f4a96bf9d4b6cc724d00e909cee0f3902", + "id": "b6ab1c298a1c1f939b393f36868c937391502112", "name": "Cross-domain XMLHttpRequest from a content script", - "path": "examples/howto/contentscript_xhr/", + "path": "examples\\howto\\contentscript_xhr\\", "protocols": [ - "http://" + "http:\/\/" ], - "search_string": "CROSS-DOMAIN XMLHTTPREQUEST FROM A CONTENT SCRIPT DEMONSTRATES A METHOD TO MAKE A CROSS-DOMAIN XMLHTTPREQUEST FETCH FROM A CONTENT SCRIPT. THIS EXTENSION FETCHES THE CURRENT TRENDING TOPICS FROM TWITTER AND INSERTS THEM IN AN OVERLAY AT THE TOP OF GOOGLE NEWS. VISIT HTTP://NEWS.GOOGLE.COM TO TEST THIS EXTENSION. BACKGROUND_PAGE CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST", + "search_string": "CROSS-DOMAIN XMLHTTPREQUEST FROM A CONTENT SCRIPT DEMONSTRATES A METHOD TO MAKE A CROSS-DOMAIN XMLHTTPREQUEST FETCH FROM A CONTENT SCRIPT. THIS EXTENSION FETCHES THE CURRENT TRENDING TOPICS FROM TWITTER AND INSERTS THEM IN AN OVERLAY AT THE TOP OF GOOGLE NEWS. VISIT HTTP:\/\/NEWS.GOOGLE.COM TO TEST THIS EXTENSION. BACKGROUND_PAGE CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST", "source_files": [ "background.html", "contentscript.js", "manifest.json" ], "source_hash": "0fe56cea50dc18b7e5e31d47c383356a85d8b896", - "zip_path": "examples/howto/contentscript_xhr.zip" + "zip_path": "examples\\howto\\contentscript_xhr.zip" }, { "api_calls": [ @@ -565,12 +574,12 @@ "tabs" ], "icon": "mail_128x128.png", - "id": "028eb5364924344029bcbe1d527f132fc72b34e5", + "id": "fad4ea2189bbcce1d2669a409ed296b10ec8b7c9", "name": "Email this page (by Google)", - "path": "examples/extensions/email_this_page/", + "path": "examples\\extensions\\email_this_page\\", "protocols": [ - "http://", - "https://" + "http:\/\/", + "https:\/\/" ], "search_string": "EMAIL THIS PAGE (BY GOOGLE) THIS EXTENSION ADDS AN EMAIL BUTTON TO THE TOOLBAR WHICH ALLOWS YOU TO EMAIL THE PAGE LINK USING YOUR DEFAULT MAIL CLIENT OR GMAIL. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE TABS CHROME.BROWSERACTION.ONCLICKED CHROME.EXTENSION.CONNECT CHROME.EXTENSION.ONCONNECT CHROME.TABS.CREATE CHROME.TABS.EXECUTESCRIPT CHROME.TABS.UPDATE", "source_files": [ @@ -580,7 +589,7 @@ "options.html" ], "source_hash": "54b5469031ddcb2097f39dbaae1bcd81ae650154", - "zip_path": "examples/extensions/email_this_page.zip" + "zip_path": "examples\\extensions\\email_this_page.zip" }, { "api_calls": [], @@ -591,9 +600,9 @@ "popup" ], "icon": "analytics-extension-icon-128.png", - "id": "763a08e9b06595d785568a8d392b95a2f3700258", + "id": "26af638d88737474bed3837343caa13f3b924615", "name": "Event Tracking with Google Analytics", - "path": "examples/tutorials/analytics/", + "path": "examples\\tutorials\\analytics\\", "protocols": [], "search_string": "EVENT TRACKING WITH GOOGLE ANALYTICS A SAMPLE EXTENSION WHICH USES GOOGLE ANALYTICS TO TRACK USAGE. BACKGROUND_PAGE BROWSER_ACTION POPUP", "source_files": [ @@ -603,7 +612,7 @@ "popup.html" ], "source_hash": "b02f040a3eb56f8a0e780549954f69172d62dcd3", - "zip_path": "examples/tutorials/analytics.zip" + "zip_path": "examples\\tutorials\\analytics.zip" }, { "api_calls": [ @@ -620,11 +629,11 @@ "tabs" ], "icon": "icon-128.png", - "id": "e3df888a89e35bdeb9c8bc8d03be5e1851b97c68", + "id": "97c797be0add2ec9ce72747b1ecdbd9b80bc73d9", "name": "Extension Docs Search", - "path": "examples/api/omnibox/extension-docs/", + "path": "examples\\api\\omnibox\\extension-docs\\", "protocols": [ - "http://" + "http:\/\/" ], "search_string": "EXTENSION DOCS SEARCH SEARCH THE CHROME EXTENSIONS DOCUMENTATION. TO USE, TYPE CRDOC PLUS A SEARCH TERM INTO THE OMNIBOX. BACKGROUND_PAGE TABS CHROME.OMNIBOX.ONINPUTCHANGED CHROME.OMNIBOX.ONINPUTENTERED CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.ONREMOVED CHROME.TABS.UPDATE", "source_files": [ @@ -632,7 +641,7 @@ "manifest.json" ], "source_hash": "0aa8ec9a2c091e227661ca5010d08f6823e643a7", - "zip_path": "examples/api/omnibox/extension-docs.zip" + "zip_path": "examples\\api\\omnibox\\extension-docs.zip" }, { "api_calls": [ @@ -658,26 +667,26 @@ "options_page", "tabs" ], - "icon": "images/icon-128.gif", - "id": "8b0dd31216235941bdd8eb33fda915ef5cf79a82", + "icon": "images\/icon-128.gif", + "id": "f802b3cce3b05de17dddd7ccfb3394d70f0ba1b5", "name": "Google Calendar Checker (by Google)", - "path": "examples/extensions/calendar/", + "path": "examples\\extensions\\calendar\\", "protocols": [ - "http://", - "https://" + "http:\/\/", + "https:\/\/" ], "search_string": "GOOGLE CALENDAR CHECKER (BY GOOGLE) QUICKLY SEE THE TIME UNTIL YOUR NEXT MEETING FROM ANY OF YOUR CALENDARS. CLICK ON THE BUTTON TO BE TAKEN TO YOUR CALENDAR. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.BROWSERACTION.SETICON CHROME.BROWSERACTION.SETTITLE CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST CHROME.I18N.GETMESSAGE CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.ONUPDATED CHROME.TABS.UPDATE", "source_files": [ - "_locales/en/messages.json", - "javascript/background.js", - "javascript/options.js", - "javascript/util.js", + "_locales\\en\\messages.json", + "javascript\\background.js", + "javascript\\options.js", + "javascript\\util.js", "manifest.json", - "views/background.html", - "views/options.html" + "views\\background.html", + "views\\options.html" ], - "source_hash": "3d9782a3e8315bbbca36c63297db2c8926df4521", - "zip_path": "examples/extensions/calendar.zip" + "source_hash": "7f39521994eb05b10c222681712ee6cdbe029334", + "zip_path": "examples\\extensions\\calendar.zip" }, { "api_calls": [ @@ -698,15 +707,15 @@ "popup", "tabs" ], - "icon": "img/docs_spreadsheets-128.gif", - "id": "4e35caa9742fb82dbd628892d23a781614f6eff6", + "icon": "img\/docs_spreadsheets-128.gif", + "id": "e83ae8cea73dfe87e420a9dac5e2906d795263cc", "name": "Google Document List Viewer", - "path": "examples/extensions/gdocs/", + "path": "examples\\extensions\\gdocs\\", "protocols": [ - "https://", - "https://", - "https://", - "https://" + "https:\/\/", + "https:\/\/", + "https:\/\/", + "https:\/\/" ], "search_string": "GOOGLE DOCUMENT LIST VIEWER DEMONSTRATES HOW TO USE OAUTH TO CONNECT THE GOOGLE DOCUMENTS LIST DATA API. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE POPUP TABS CHROME.BROWSERACTION.SETBADGETEXT CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.GETURL CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONUPDATED CHROME.TABS.REMOVE", "source_files": [ @@ -714,13 +723,13 @@ "chrome_ex_oauth.html", "chrome_ex_oauth.js", "chrome_ex_oauthsimple.js", - "js/jquery-1.4.1.min.js", + "js\\jquery-1.4.1.min.js", "manifest.json", "options.html", "popup.html" ], "source_hash": "284e44d603a62348dd1b7e98e593f3f4b877b124", - "zip_path": "examples/extensions/gdocs.zip" + "zip_path": "examples\\extensions\\gdocs.zip" }, { "api_calls": [ @@ -744,63 +753,63 @@ "tabs" ], "icon": "icon_128.png", - "id": "bb57f7a0132cbeb36ad7e7bb0ab75c21704234ca", + "id": "8ad6dbf5f536e3181945cd352930da9cc159dc71", "name": "Google Mail Checker", - "path": "examples/extensions/gmail/", + "path": "examples\\extensions\\gmail\\", "protocols": [ - "http://", - "https://" + "http:\/\/", + "https:\/\/" ], "search_string": "GOOGLE MAIL CHECKER DISPLAYS THE NUMBER OF UNREAD MESSAGES IN YOUR GOOGLE MAIL INBOX. YOU CAN ALSO CLICK THE BUTTON TO OPEN YOUR INBOX. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.BROWSERACTION.SETICON CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.I18N.GETMESSAGE CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.ONUPDATED CHROME.TABS.UPDATE", "source_files": [ - "_locales/ar/messages.json", - "_locales/bg/messages.json", - "_locales/ca/messages.json", - "_locales/cs/messages.json", - "_locales/da/messages.json", - "_locales/de/messages.json", - "_locales/el/messages.json", - "_locales/en/messages.json", - "_locales/en_GB/messages.json", - "_locales/es/messages.json", - "_locales/es_419/messages.json", - "_locales/et/messages.json", - "_locales/fi/messages.json", - "_locales/fil/messages.json", - "_locales/fr/messages.json", - "_locales/he/messages.json", - "_locales/hi/messages.json", - "_locales/hr/messages.json", - "_locales/hu/messages.json", - "_locales/id/messages.json", - "_locales/it/messages.json", - "_locales/ja/messages.json", - "_locales/ko/messages.json", - "_locales/lt/messages.json", - "_locales/lv/messages.json", - "_locales/nb/messages.json", - "_locales/nl/messages.json", - "_locales/pl/messages.json", - "_locales/pt_BR/messages.json", - "_locales/pt_PT/messages.json", - "_locales/ro/messages.json", - "_locales/ru/messages.json", - "_locales/sk/messages.json", - "_locales/sl/messages.json", - "_locales/sr/messages.json", - "_locales/sv/messages.json", - "_locales/th/messages.json", - "_locales/tr/messages.json", - "_locales/uk/messages.json", - "_locales/vi/messages.json", - "_locales/zh_CN/messages.json", - "_locales/zh_TW/messages.json", + "_locales\\ar\\messages.json", + "_locales\\bg\\messages.json", + "_locales\\ca\\messages.json", + "_locales\\cs\\messages.json", + "_locales\\da\\messages.json", + "_locales\\de\\messages.json", + "_locales\\el\\messages.json", + "_locales\\en\\messages.json", + "_locales\\en_GB\\messages.json", + "_locales\\es\\messages.json", + "_locales\\es_419\\messages.json", + "_locales\\et\\messages.json", + "_locales\\fi\\messages.json", + "_locales\\fil\\messages.json", + "_locales\\fr\\messages.json", + "_locales\\he\\messages.json", + "_locales\\hi\\messages.json", + "_locales\\hr\\messages.json", + "_locales\\hu\\messages.json", + "_locales\\id\\messages.json", + "_locales\\it\\messages.json", + "_locales\\ja\\messages.json", + "_locales\\ko\\messages.json", + "_locales\\lt\\messages.json", + "_locales\\lv\\messages.json", + "_locales\\nb\\messages.json", + "_locales\\nl\\messages.json", + "_locales\\pl\\messages.json", + "_locales\\pt_BR\\messages.json", + "_locales\\pt_PT\\messages.json", + "_locales\\ro\\messages.json", + "_locales\\ru\\messages.json", + "_locales\\sk\\messages.json", + "_locales\\sl\\messages.json", + "_locales\\sr\\messages.json", + "_locales\\sv\\messages.json", + "_locales\\th\\messages.json", + "_locales\\tr\\messages.json", + "_locales\\uk\\messages.json", + "_locales\\vi\\messages.json", + "_locales\\zh_CN\\messages.json", + "_locales\\zh_TW\\messages.json", "background.html", "manifest.json", "options.html" ], "source_hash": "030b77992ed5bbbbc18f1b717bc330b965b26aaf", - "zip_path": "examples/extensions/gmail.zip" + "zip_path": "examples\\extensions\\gmail.zip" }, { "api_calls": [ @@ -821,12 +830,12 @@ "tabs" ], "icon": "128.png", - "id": "1682e05ea9a1bde985123b04f6f8ac50a8a64033", + "id": "56529b7cbd67869d7fcebd6d46c3efddfe7b598f", "name": "Google Wave Notifier", - "path": "examples/extensions/wave/", + "path": "examples\\extensions\\wave\\", "protocols": [ - "https://", - "http://" + "https:\/\/", + "http:\/\/" ], "search_string": "GOOGLE WAVE NOTIFIER FIND OUT WHEN YOU HAVE NEW WAVES AND PREVIEW THEM FAST. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE POPUP TABS CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.GETURL CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONUPDATED CHROME.TABS.REMOVE", "source_files": [ @@ -840,7 +849,7 @@ "prettyload.js" ], "source_hash": "9f360bf8772e8a23862d854ea088e0bec867ba02", - "zip_path": "examples/extensions/wave.zip" + "zip_path": "examples\\extensions\\wave.zip" }, { "api_calls": [], @@ -850,11 +859,11 @@ "popup" ], "icon": null, - "id": "14b9651fda4e57b2a5914ba73a779812201b750a", + "id": "6deee0c2a7dbdd62a80deb526005814fa37e6556", "name": "Hello World", - "path": "examples/tutorials/getstarted/", + "path": "examples\\tutorials\\getstarted\\", "protocols": [ - "http://" + "http:\/\/" ], "search_string": "HELLO WORLD THE FIRST EXTENSION THAT I MADE. BROWSER_ACTION POPUP", "source_files": [ @@ -862,7 +871,7 @@ "popup.html" ], "source_hash": "1a3139dcb7f3e3499023703643e7056c61235123", - "zip_path": "examples/tutorials/getstarted.zip" + "zip_path": "examples\\tutorials\\getstarted.zip" }, { "api_calls": [ @@ -878,9 +887,9 @@ "idle" ], "icon": "sample-128.png", - "id": "2020d72f2577f53caf8e94e3dbac0fb849ceaa4d", + "id": "f0f5a81e76c7b29f8d13543dafd728285ecc96d7", "name": "Idle - Simple Example", - "path": "examples/api/idle/idle_simple/", + "path": "examples\\api\\idle\\idle_simple\\", "protocols": [], "search_string": "IDLE - SIMPLE EXAMPLE DEMONSTRATES THE IDLE API BACKGROUND_PAGE BROWSER_ACTION IDLE CHROME.BROWSERACTION.ONCLICKED CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.IDLE.ONSTATECHANGED CHROME.IDLE.QUERYSTATE", "source_files": [ @@ -889,7 +898,7 @@ "manifest.json" ], "source_hash": "1378042fee96e115d7b8003588eca369b43f772b", - "zip_path": "examples/api/idle/idle_simple.zip" + "zip_path": "examples\\api\\idle\\idle_simple.zip" }, { "api_calls": [], @@ -898,9 +907,9 @@ "chrome_url_overrides" ], "icon": null, - "id": "0ea1588bd07b20338fc21f725de1542a5fdf9726", + "id": "6e8555409ac09df65620a4f1651e9f283983eec5", "name": "iGoogle new tab page", - "path": "examples/api/override/override_igoogle/", + "path": "examples\\api\\override\\override_igoogle\\", "protocols": [], "search_string": "IGOOGLE NEW TAB PAGE CHROME_URL_OVERRIDES", "source_files": [ @@ -908,7 +917,7 @@ "redirect.html" ], "source_hash": "8ee76608adbf87c3260f9905e6cb1c8a45bd8e0c", - "zip_path": "examples/api/override/override_igoogle.zip" + "zip_path": "examples\\api\\override\\override_igoogle.zip" }, { "api_calls": [ @@ -925,24 +934,24 @@ "tabs" ], "icon": "imageinfo-128.png", - "id": "646325c25f572a1d15edc73d057f821d847a4fbe", + "id": "e08426e68f327ea625937f4668b89da16da0e467", "name": "Imageinfo", - "path": "examples/extensions/imageinfo/", + "path": "examples\\extensions\\imageinfo\\", "protocols": [ - "http://", - "https://" + "http:\/\/", + "https:\/\/" ], "search_string": "IMAGEINFO GET IMAGE INFO FOR IMAGES, INCLUDING EXIF DATA BACKGROUND_PAGE CONTEXTMENUS TABS CHROME.CONTEXTMENUS.CREATE CHROME.TABS.GET CHROME.TABS.GETCURRENT CHROME.WINDOWS.CREATE CHROME.WINDOWS.UPDATE", "source_files": [ "background.html", - "imageinfo/binaryajax.js", - "imageinfo/exif.js", - "imageinfo/imageinfo.js", + "imageinfo\\binaryajax.js", + "imageinfo\\exif.js", + "imageinfo\\imageinfo.js", "info.html", "manifest.json" ], - "source_hash": "c746d9114348f4b414c1ec05e988e2807feb963a", - "zip_path": "examples/extensions/imageinfo.zip" + "source_hash": "672f49ed8edbe0829c7ba5a1d890b4440b157991", + "zip_path": "examples\\extensions\\imageinfo.zip" }, { "api_calls": [ @@ -965,11 +974,11 @@ "tabs" ], "icon": "icon.png", - "id": "ec97ec20ca2f095d081e39f1565fc12af09ef067", + "id": "5c7def7e0a26bac297128161b2bb9b2fc279985b", "name": "Mappy", - "path": "examples/extensions/mappy/", + "path": "examples\\extensions\\mappy\\", "protocols": [ - "http://" + "http:\/\/" ], "search_string": "MAPPY FINDS ADDRESSES IN THE WEB PAGE YOURE ON AND POPS UP A MAP WINDOW. BACKGROUND_PAGE PAGE_ACTION POPUP TABS CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.ONREQUEST CHROME.PAGEACTION.HIDE CHROME.PAGEACTION.SETTITLE CHROME.PAGEACTION.SHOW CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONSELECTIONCHANGED CHROME.TABS.ONUPDATED CHROME.TABS.SENDREQUEST", "source_files": [ @@ -978,8 +987,8 @@ "mappy_content_script.js", "popup.html" ], - "source_hash": "81cf2d3975d7df8b58e5226c5b2b6df026446511", - "zip_path": "examples/extensions/mappy.zip" + "source_hash": "4f9ce20e8352148b0a2c1cd91c212fd67b5e61f1", + "zip_path": "examples\\extensions\\mappy.zip" }, { "api_calls": [ @@ -998,9 +1007,9 @@ "tabs" ], "icon": "merge_windows_128.png", - "id": "b2f5f8a790e16f091a7e4e0a39b2d0a6d32e3a6d", + "id": "d72b4e8576fb00ad176957738099c930cffcfb9e", "name": "Merge Windows", - "path": "examples/api/windows/merge_windows/", + "path": "examples\\api\\windows\\merge_windows\\", "protocols": [], "search_string": "MERGE WINDOWS MERGES ALL OF THE BROWSERS WINDOWS INTO THE CURRENT WINDOW BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.TABS.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.MOVE CHROME.WINDOWS.GET CHROME.WINDOWS.GETALL CHROME.WINDOWS.GETCURRENT", "source_files": [ @@ -1008,7 +1017,7 @@ "manifest.json" ], "source_hash": "4b5fe52788e0bef2f3871b36105eb53cc760c454", - "zip_path": "examples/api/windows/merge_windows.zip" + "zip_path": "examples\\api\\windows\\merge_windows.zip" }, { "api_calls": [ @@ -1026,9 +1035,9 @@ "tabs" ], "icon": null, - "id": "51a83d2ba3a32e3ff1bdb624d4e18ccec4c4038e", + "id": "af975d20117c15a36dff66ef5a1ebca92f653969", "name": "Message Timer", - "path": "examples/api/messaging/timer/", + "path": "examples\\api\\messaging\\timer\\", "protocols": [], "search_string": "MESSAGE TIMER TIMES HOW LONG IT TAKES TO SEND A MESSAGE TO A CONTENT SCRIPT AND BACK. BROWSER_ACTION POPUP TABS CHROME.EXTENSION.ONCONNECT CHROME.EXTENSION.ONREQUEST CHROME.TABS.CONNECT CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.SENDREQUEST", "source_files": [ @@ -1037,7 +1046,7 @@ "popup.html" ], "source_hash": "927cf398a95a665beb64f56a4bfb791b98a8ee96", - "zip_path": "examples/api/messaging/timer.zip" + "zip_path": "examples\\api\\messaging\\timer.zip" }, { "api_calls": [ @@ -1056,17 +1065,17 @@ "tabs" ], "icon": null, - "id": "4f6785ec4f937add6728615682dd37c9a42d9548", + "id": "7772f091557a50889effa6e5b19e83b4cf80399b", "name": "My Bookmarks", - "path": "examples/api/bookmarks/basic/", + "path": "examples\\api\\bookmarks\\basic\\", "protocols": [], "search_string": "MY BOOKMARKS A BROWSER ACTION WITH A POPUP DUMP OF ALL BOOKMARKS, INCLUDING SEARCH, ADD, EDIT AND DELETE. BOOKMARKS BROWSER_ACTION POPUP TABS CHROME.BOOKMARKS.CREATE CHROME.BOOKMARKS.GET CHROME.BOOKMARKS.GETTREE CHROME.BOOKMARKS.REMOVE CHROME.BOOKMARKS.UPDATE CHROME.TABS.CREATE", "source_files": [ "manifest.json", "popup.html" ], - "source_hash": "4f7509c56c2943cf8aedf1ee0b4b4a7d1e49f7d3", - "zip_path": "examples/api/bookmarks/basic.zip" + "source_hash": "5fd4c8e159a36d2462e9691db12d77a27684d6b7", + "zip_path": "examples\\api\\bookmarks\\basic.zip" }, { "api_calls": [ @@ -1079,11 +1088,11 @@ "tabs" ], "icon": "news_icon.png", - "id": "597015d3bcce3da693b02314afd607bec4f55291", + "id": "28c933f585b0903a56f9a16658aa26cf61f9da0f", "name": "News Reader", - "path": "examples/extensions/news_a11y/", + "path": "examples\\extensions\\news_a11y\\", "protocols": [ - "http://" + "http:\/\/" ], "search_string": "NEWS READER DISPLAYS THE FIRST 5 ITEMS FROM THE GOOGLE NEWS - TOP NEWS RSS FEED IN A POPUP. BROWSER_ACTION POPUP TABS CHROME.TABS.CREATE", "source_files": [ @@ -1091,7 +1100,7 @@ "manifest.json" ], "source_hash": "af7474bf0d3ef1a407f27ae0900167a1408ead35", - "zip_path": "examples/extensions/news_a11y.zip" + "zip_path": "examples\\extensions\\news_a11y.zip" }, { "api_calls": [ @@ -1105,23 +1114,23 @@ "tabs" ], "icon": "news_icon.png", - "id": "6444e5c8ae112a6a433909c5e770669cd16e2e5f", + "id": "80e7eac29801029c81ecaabb7c7021bbd0ceea88", "name": "News Reader", - "path": "examples/extensions/news_i18n/", + "path": "examples\\extensions\\news_i18n\\", "protocols": [ - "http://", - "http://" + "http:\/\/", + "http:\/\/" ], "search_string": "NEWS READER DISPLAYS THE FIRST 5 ITEMS FROM THE GOOGLE NEWS - TOP NEWS RSS FEED IN A POPUP. BROWSER_ACTION POPUP TABS CHROME.I18N.GETMESSAGE CHROME.TABS.CREATE", "source_files": [ - "_locales/en/messages.json", - "_locales/es/messages.json", - "_locales/sr/messages.json", + "_locales\\en\\messages.json", + "_locales\\es\\messages.json", + "_locales\\sr\\messages.json", "feed.html", "manifest.json" ], "source_hash": "381268f1183beaeba8d6596e736dc2c00a55fd21", - "zip_path": "examples/extensions/news_i18n.zip" + "zip_path": "examples\\extensions\\news_i18n.zip" }, { "api_calls": [ @@ -1137,28 +1146,28 @@ "popup", "tabs" ], - "icon": "images/news_icon.png", - "id": "3aea027164cb9b732ba4a8c51cb93708891726ef", + "icon": "images\/news_icon.png", + "id": "e9e5f15da193c45aad4d49ced748dfbbd6c904b3", "name": "News Reader (by Google)", - "path": "examples/extensions/news/", + "path": "examples\\extensions\\news\\", "protocols": [ - "http://" + "http:\/\/" ], "search_string": "NEWS READER (BY GOOGLE) DISPLAYS THE LATEST STORIES FROM GOOGLE NEWS IN A POPUP. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE POPUP TABS CHROME.EXTENSION.GETURL CHROME.I18N.GETMESSAGE CHROME.TABS.CREATE", "source_files": [ - "_locales/en/messages.json", - "css/feed.css", - "css/options.css", - "javascript/feed.js", - "javascript/options.js", - "javascript/util.js", + "_locales\\en\\messages.json", + "css\\feed.css", + "css\\options.css", + "javascript\\feed.js", + "javascript\\options.js", + "javascript\\util.js", "manifest.json", - "views/background.html", - "views/feed.html", - "views/options.html" + "views\\background.html", + "views\\feed.html", + "views\\options.html" ], "source_hash": "cc21920e101dd4d4c535f4842e3f0ab4be285166", - "zip_path": "examples/extensions/news.zip" + "zip_path": "examples\\extensions\\news.zip" }, { "api_calls": [ @@ -1172,9 +1181,9 @@ "tabs" ], "icon": "128.png", - "id": "f799e26ceef2367cf836f24bcb47df4398b0df58", + "id": "324e557c216dd6edbeb0112ed53d55a05b5e6112", "name": "Notification Demo", - "path": "examples/api/notifications/", + "path": "examples\\api\\notifications\\", "protocols": [], "search_string": "NOTIFICATION DEMO SHOWS OFF DESKTOP NOTIFICATIONS, WHICH ARE TOAST WINDOWS THAT POP UP ON THE DESKTOP. BACKGROUND_PAGE NOTIFICATIONS OPTIONS_PAGE TABS CHROME.TABS.CREATE", "source_files": [ @@ -1184,7 +1193,7 @@ "options.html" ], "source_hash": "bc2985ef75d717779cb6e1e523a3e063067c3494", - "zip_path": "examples/api/notifications.zip" + "zip_path": "examples\\api\\notifications.zip" }, { "api_calls": [ @@ -1196,9 +1205,9 @@ "background_page" ], "icon": null, - "id": "e787b322bddbc6289bb31b7d7550b1bf6456a80b", + "id": "85a9f4cfd3645dfc4d1d90cc559261b689803626", "name": "Omnibox Example", - "path": "examples/api/omnibox/simple-example/", + "path": "examples\\api\\omnibox\\simple-example\\", "protocols": [], "search_string": "OMNIBOX EXAMPLE TO USE, TYPE OMNIX PLUS A SEARCH TERM INTO THE OMNIBOX. BACKGROUND_PAGE CHROME.OMNIBOX.ONINPUTCHANGED CHROME.OMNIBOX.ONINPUTENTERED", "source_files": [ @@ -1206,7 +1215,7 @@ "manifest.json" ], "source_hash": "21f142aad0637086ec08923a11ce3dee70e42bc6", - "zip_path": "examples/api/omnibox/simple-example.zip" + "zip_path": "examples\\api\\omnibox\\simple-example.zip" }, { "api_calls": [ @@ -1220,9 +1229,9 @@ "page_action" ], "icon": "sandwich-128.png", - "id": "8d0a50b57c26bb498be592e871001ffed91541b4", + "id": "56bbb002845c9ada93807b2f83d51447adf146fd", "name": "Page action by content", - "path": "examples/api/pageAction/pageaction_by_content/", + "path": "examples\\api\\pageAction\\pageaction_by_content\\", "protocols": [], "search_string": "PAGE ACTION BY CONTENT SHOWS A PAGE ACTION FOR HTML PAGES CONTAINING THE WORD SANDWICH BACKGROUND_PAGE PAGE_ACTION CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST CHROME.PAGEACTION.SHOW", "source_files": [ @@ -1231,7 +1240,7 @@ "manifest.json" ], "source_hash": "0f4b881b1bc2e2fd6098fd219ca061b72a9654b7", - "zip_path": "examples/api/pageAction/pageaction_by_content.zip" + "zip_path": "examples\\api\\pageAction\\pageaction_by_content.zip" }, { "api_calls": [ @@ -1245,9 +1254,9 @@ "tabs" ], "icon": "icon-128.png", - "id": "80b86ccc6e8520660fa591caa565826f0ed1b12c", + "id": "65afad56921c30f207a30f5ecf929e06b712f552", "name": "Page action by URL", - "path": "examples/api/pageAction/pageaction_by_url/", + "path": "examples\\api\\pageAction\\pageaction_by_url\\", "protocols": [], "search_string": "PAGE ACTION BY URL SHOWS A PAGE ACTION FOR URLS WHICH HAVE THE LETTER G IN THEM. BACKGROUND_PAGE PAGE_ACTION TABS CHROME.PAGEACTION.SHOW CHROME.TABS.ONUPDATED", "source_files": [ @@ -1255,7 +1264,7 @@ "manifest.json" ], "source_hash": "732ef0951e1d6ff4afedb884b0e63cb342bb1499", - "zip_path": "examples/api/pageAction/pageaction_by_url.zip" + "zip_path": "examples\\api\\pageAction\\pageaction_by_url.zip" }, { "api_calls": [ @@ -1286,36 +1295,36 @@ "tabs" ], "icon": null, - "id": "d74c3c18a1c1dd18b035149105a306f837c8823e", + "id": "7446de67bf18dc34b5ff0fb4e1d9d7d166339bb9", "name": "Page Benchmarker", - "path": "examples/extensions/benchmark/", + "path": "examples\\extensions\\benchmark\\", "protocols": [ - "https://", - "http://" + "https:\/\/", + "http:\/\/" ], "search_string": "PAGE BENCHMARKER CHROMIUM PAGE BENCHMARKER. BACKGROUND_PAGE BROWSER_ACTION OPTIONS_PAGE TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETBADGEBACKGROUNDCOLOR CHROME.BROWSERACTION.SETBADGETEXT CHROME.BROWSERACTION.SETTITLE CHROME.EXTENSION.CONNECT CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.GETEXTENSIONTABS CHROME.EXTENSION.GETURL CHROME.EXTENSION.ONCONNECT CHROME.TABS.CREATE CHROME.TABS.EXECUTESCRIPT CHROME.TABS.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.GETSELECTED CHROME.TABS.REMOVE CHROME.TABS.UPDATE CHROME.WINDOWS.GET CHROME.WINDOWS.GETCURRENT", "source_files": [ "background.html", - "jquery/jquery-1.4.2.min.js", - "jquery/jquery-ui-1.8.4.custom.min.js", - "jquery/jquery.client.js", - "jquery/jquery.flot.dashes.js", - "jquery/jquery.flot.js", - "jquery/jquery.flot.min.js", - "jquery/jquery.flot.navigate.js", - "jquery/jquery.flot.valuelabels.js", - "jst/jsevalcontext.js", - "jst/jstemplate.js", - "jst/jstemplate_test.js", - "jst/util.js", + "jquery\\jquery-1.4.2.min.js", + "jquery\\jquery-ui-1.8.4.custom.min.js", + "jquery\\jquery.client.js", + "jquery\\jquery.flot.dashes.js", + "jquery\\jquery.flot.js", + "jquery\\jquery.flot.min.js", + "jquery\\jquery.flot.navigate.js", + "jquery\\jquery.flot.valuelabels.js", + "jst\\jsevalcontext.js", + "jst\\jstemplate.js", + "jst\\jstemplate_test.js", + "jst\\util.js", "manifest.json", "options.html", "script.js", - "util/sorttable.js", - "util/table2CSV.js" + "util\\sorttable.js", + "util\\table2CSV.js" ], - "source_hash": "7e592dbd3446353f7d98d1760f7cd773035aaaad", - "zip_path": "examples/extensions/benchmark.zip" + "source_hash": "8a8cf6896eab009a372e9ec091a41e8e6fed4f1b", + "zip_path": "examples\\extensions\\benchmark.zip" }, { "api_calls": [ @@ -1329,12 +1338,12 @@ "tabs" ], "icon": null, - "id": "e6ae17ab4ccfd7e059c8c01f25760ca5d894c7fd", + "id": "a9ea9e35b2e9990e488afeb97407655ea14fc8dc", "name": "Print this page", - "path": "examples/api/browserAction/print/", + "path": "examples\\api\\browserAction\\print\\", "protocols": [ - "http://", - "https://" + "http:\/\/", + "https:\/\/" ], "search_string": "PRINT THIS PAGE ADDS A PRINT BUTTON TO THE BROWSER. BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.TABS.UPDATE", "source_files": [ @@ -1342,7 +1351,7 @@ "manifest.json" ], "source_hash": "be980117222f6b041bb012c5a0793040cef747b6", - "zip_path": "examples/api/browserAction/print.zip" + "zip_path": "examples\\api\\browserAction\\print.zip" }, { "api_calls": [ @@ -1356,9 +1365,9 @@ "tabs" ], "icon": null, - "id": "beff6ecd9677dea0a7c648c5042165b48bb66f09", + "id": "455ec3784d8094b318eac572bc092ec07c5286b0", "name": "Process Monitor", - "path": "examples/api/processes/process_monitor/", + "path": "examples\\api\\processes\\process_monitor\\", "protocols": [], "search_string": "PROCESS MONITOR ADDS A BROWSER ACTION THAT MONITORS RESOURCE USAGE OF ALL BROWSER PROCESSES. BROWSER_ACTION EXPERIMENTAL POPUP TABS CHROME.EXPERIMENTAL.PROCESSES.ONUPDATED", "source_files": [ @@ -1366,7 +1375,7 @@ "popup.html" ], "source_hash": "a4d002a65d5ec54ef4495f8b5552a260119df739", - "zip_path": "examples/api/processes/process_monitor.zip" + "zip_path": "examples\\api\\processes\\process_monitor.zip" }, { "api_calls": [ @@ -1386,15 +1395,15 @@ "browser_action", "tabs" ], - "icon": "img/icon-128.png", - "id": "56a8d2ac24ca7bba78fd88ad57f43fc13c784497", + "icon": "img\/icon-128.png", + "id": "545d6989740a0e7f57a9751c2ebc0e250053a08f", "name": "Sample - OAuth Contacts", - "path": "examples/extensions/oauth_contacts/", + "path": "examples\\extensions\\oauth_contacts\\", "protocols": [ - "http://", - "https://", - "https://", - "https://" + "http:\/\/", + "https:\/\/", + "https:\/\/", + "https:\/\/" ], "search_string": "SAMPLE - OAUTH CONTACTS USES OAUTH TO CONNECT TO GOOGLES CONTACTS SERVICE AND DISPLAY A LIST OF YOUR CONTACTS. BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.BROWSERACTION.SETICON CHROME.EXTENSION.GETBACKGROUNDPAGE CHROME.EXTENSION.GETURL CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.ONUPDATED CHROME.TABS.REMOVE", "source_files": [ @@ -1406,7 +1415,7 @@ "manifest.json" ], "source_hash": "e9afbd588b1593c9d3e9b9612ac242c781871f34", - "zip_path": "examples/extensions/oauth_contacts.zip" + "zip_path": "examples\\extensions\\oauth_contacts.zip" }, { "api_calls": [ @@ -1420,9 +1429,9 @@ "experimental" ], "icon": "sandwich-128.png", - "id": "38f6e1e17756ede38b1364c7114a738ca717dcbb", + "id": "39a3d4c4282ee5090652938decfb6df79b626151", "name": "SandwichBar", - "path": "examples/api/infobars/sandwichbar/", + "path": "examples\\api\\infobars\\sandwichbar\\", "protocols": [], "search_string": "SANDWICHBAR SHOWS AN INFOBAR ON PAGES WHICH CONTAIN THE WORD SANDWICH BACKGROUND_PAGE EXPERIMENTAL CHROME.EXPERIMENTAL.INFOBARS.SHOW CHROME.EXTENSION.ONREQUEST CHROME.EXTENSION.SENDREQUEST", "source_files": [ @@ -1432,7 +1441,7 @@ "manifest.json" ], "source_hash": "890d698634e5228ef7da8ffca3008f843b9a7cab", - "zip_path": "examples/api/infobars/sandwichbar.zip" + "zip_path": "examples\\api\\infobars\\sandwichbar.zip" }, { "api_calls": [ @@ -1453,9 +1462,9 @@ "tabs" ], "icon": null, - "id": "fc89b35755483af30b66cd72cefa34a43a3e8312", + "id": "364415e46171be6479a095b214eab9783a4648d2", "name": "Show Tabs in Process", - "path": "examples/api/processes/show_tabs/", + "path": "examples\\api\\processes\\show_tabs\\", "protocols": [], "search_string": "SHOW TABS IN PROCESS ADDS A BROWSER ACTION SHOWING WHICH TABS SHARE THE CURRENT TABS PROCESS. BROWSER_ACTION EXPERIMENTAL POPUP TABS CHROME.EXPERIMENTAL.PROCESSES.GETPROCESSIDFORTAB CHROME.TABS.GET CHROME.TABS.GETSELECTED CHROME.TABS.UPDATE CHROME.WINDOWS.GET CHROME.WINDOWS.GETALL CHROME.WINDOWS.GETCURRENT CHROME.WINDOWS.UPDATE", "source_files": [ @@ -1463,7 +1472,7 @@ "popup.html" ], "source_hash": "c9818c3c4c2e4fae0a7cc29588514e050356fd52", - "zip_path": "examples/api/processes/show_tabs.zip" + "zip_path": "examples\\api\\processes\\show_tabs.zip" }, { "api_calls": [ @@ -1501,9 +1510,9 @@ "tabs" ], "icon": null, - "id": "230463f2d5c3d4d0ca13c230e1f00f2aae0a8a64", + "id": "ad0d399dfc6d92af6ee9b759d7792a0d0bb85370", "name": "Tab Inspector", - "path": "examples/api/tabs/inspector/", + "path": "examples\\api\\tabs\\inspector\\", "protocols": [], "search_string": "TAB INSPECTOR UTILITY FOR WORKING WITH THE EXTENSION TABS API BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.EXTENSION.GETURL CHROME.TABS.CREATE CHROME.TABS.GET CHROME.TABS.GETALLINWINDOW CHROME.TABS.GETSELECTED CHROME.TABS.MOVE CHROME.TABS.ONATTACHED CHROME.TABS.ONCREATED CHROME.TABS.ONDETACHED CHROME.TABS.ONMOVED CHROME.TABS.ONREMOVED CHROME.TABS.ONSELECTIONCHANGED CHROME.TABS.ONUPDATED CHROME.TABS.REMOVE CHROME.TABS.UPDATE CHROME.WINDOWS.CREATE CHROME.WINDOWS.GET CHROME.WINDOWS.GETALL CHROME.WINDOWS.GETCURRENT CHROME.WINDOWS.GETLASTFOCUSED CHROME.WINDOWS.ONCREATED CHROME.WINDOWS.ONFOCUSCHANGED CHROME.WINDOWS.ONREMOVED CHROME.WINDOWS.REMOVE CHROME.WINDOWS.UPDATE", "source_files": [ @@ -1513,7 +1522,7 @@ "tabs_api.html" ], "source_hash": "3076b39a4302d8e86f456e6d7367129187cce0c0", - "zip_path": "examples/api/tabs/inspector.zip" + "zip_path": "examples\\api\\tabs\\inspector.zip" }, { "api_calls": [ @@ -1531,9 +1540,9 @@ "tabs" ], "icon": null, - "id": "e1697cacebad05218798bf3e8a0f724517f0e8c3", + "id": "1e28bcf89e80466f155ab3a01a76cf5f60cb4104", "name": "Test Screenshot Extension", - "path": "examples/api/tabs/screenshot/", + "path": "examples\\api\\tabs\\screenshot\\", "protocols": [], "search_string": "TEST SCREENSHOT EXTENSION DEMONSTRATE SCREENSHOT FUNCTIONALITY IN THE CHROME.TABS API. BACKGROUND_PAGE BROWSER_ACTION TABS CHROME.BROWSERACTION.ONCLICKED CHROME.EXTENSION.GETURL CHROME.EXTENSION.GETVIEWS CHROME.TABS.CAPTUREVISIBLETAB CHROME.TABS.CREATE CHROME.TABS.ONUPDATED", "source_files": [ @@ -1543,7 +1552,7 @@ "screenshot.js" ], "source_hash": "6be9b92850e86ce311cc12a2cf0cda3b47ab5d58", - "zip_path": "examples/api/tabs/screenshot.zip" + "zip_path": "examples\\api\\tabs\\screenshot.zip" }, { "api_calls": [ @@ -1558,9 +1567,9 @@ "tabs" ], "icon": null, - "id": "b3de91ab04b7d7a2670ca7ee9d740eb42cead0b6", + "id": "7b375c0f2c88517b42a5a341ac77e0762b481233", "name": "Typed URL History", - "path": "examples/api/history/showHistory/", + "path": "examples\\api\\history\\showHistory\\", "protocols": [], "search_string": "TYPED URL HISTORY READS YOUR HISTORY, AND SHOWS THE TOP TEN PAGES YOU GO TO BY TYPING THE URL. BROWSER_ACTION HISTORY TABS CHROME.HISTORY.GETVISITS CHROME.HISTORY.SEARCH CHROME.TABS.CREATE", "source_files": [ @@ -1569,7 +1578,7 @@ "typedUrls.js" ], "source_hash": "72d5c3586feefc692c63039ce8bdb5f9d366c0e2", - "zip_path": "examples/api/history/showHistory.zip" + "zip_path": "examples\\api\\history\\showHistory.zip" } ] }
\ No newline at end of file diff --git a/chrome/common/extensions/docs/static/browserAction.html b/chrome/common/extensions/docs/static/browserAction.html index 40da968..dbc3a53 100644 --- a/chrome/common/extensions/docs/static/browserAction.html +++ b/chrome/common/extensions/docs/static/browserAction.html @@ -47,7 +47,7 @@ like this: "name": "My extension", ... <b>"browser_action": { - "default_icon": "images/icon19.png", <em>// <b>required</b></em> + "default_icon": "images/icon19.png", <em>// optional</em> "default_title": "Google Mail", <em>// optional; shown in tooltip</em> "default_popup": "popup.html" <em>// optional</em> }</b>, @@ -57,8 +57,7 @@ like this: <h2 id="ui">Parts of the UI</h2> <p> -A browser action must have an <a href="#icon">icon</a>. -It can also have +A browser action can have an <a href="#icon">icon</a>, a <a href="#tooltip">tooltip</a>, a <a href="#badge">badge</a>, and a <a href="#popups">popup</a>. diff --git a/chrome/common/extensions/docs/static/experimental.tts.html b/chrome/common/extensions/docs/static/experimental.tts.html new file mode 100644 index 0000000..fb2a772 --- /dev/null +++ b/chrome/common/extensions/docs/static/experimental.tts.html @@ -0,0 +1,146 @@ +<p id="classSummary"> +Use the <code>chrome.experimental.tts</code> module to play synthesized +text-to-speech (TTS) from your extension or packaged app, or to register +as a speech provider for other extensions and packaged apps that want to speak. +</p> + +<p class="note"><b>Give us feedback:</b> If you have suggestions, +especially changes that should be made before stabilizing the first +version of this API, please send your ideas to the +<a href="http://groups.google.com/a/chromium.org/group/chromium-extensions">chromium-extensions</a> +group.</p> + +<h2 id="overview">Overview</h2> + +<p>To enable this experimental API, visit +<b>chrome://flags</b> and enable <b>Experimental Extension APIs</b>. + +<p>Chrome provides native support for speech on Windows (using SAPI +5), Mac OS X, and Chrome OS, using speech synthesis capabilities +provided by the operating system. On all platforms, the user can +install extensions that register themselves as alternative speech +synthesis providers.</p> + +<h2 id="generating_speech">Generating speech</h2> + +<p>Call <code>speak()</code> from your extension or +packaged app to speak. For example:</p> + +<pre>chrome.experimental.tts.speak('Hello, world.');</pre> + +<p>You can provide options that control various properties of the speech, +such as its rate, pitch, and more. For example:</p> + +<pre>chrome.experimental.tts.speak('Hello, world.', {'rate': 0.8});</pre> + +<p>It's also a good idea to specify the locale so that a synthesizer +supporting that language (and regional dialect, if applicable) is chosen.</p> + +<pre>chrome.experimental.tts.speak( + 'Hello, world.', + { + 'locale': 'en-US', + 'rate': 0.8 + });</pre> + +<p>Not all speech engines will support all options.</p> + +<p>You can also pass a callback function that will be called when the +speech has finished. For example, suppose we have an image on our page +displaying a picture of a face with a closed mouth. We could open the mouth +while speaking, and close it when done.</p> + +<pre>faceImage.src = 'open_mouth.png'; +chrome.experimental.tts.speak( + 'Hello, world.', null, function() { + faceImage.src = 'closed_mouth.png'; + }); +</pre> + +<p>To stop speaking immediately, just call <code>stop()</code>. Call +<code>isSpeaking()</code> to find out if a TTS engine is currently speaking.</p> + +<p>You can check to see if an error occurred by checking +<code>chrome.extension.lastError</code> inside the callback function.</p> + +<h2 id="ssml">SSML markup</h2> + +<p>Utterances used in this API may include markup using the +<a href="http://www.w3.org/TR/speech-synthesis">Speech Synthesis Markup +Language (SSML)</a>. For example: + +<pre>chrome.experimental.tts.speak('The <emphasis>second</emphasis> word of this sentence was emphasized.');</pre> + +<p>Not all speech engines will support all SSML tags, and some may not support +SSML at all, but all engines are expected to ignore any SSML they don't +support and still speak the underlying text.</p> + +<h2 id="provider">Implementing a speech provider</h2> + +<p>An extension can register itself as a speech provider. By doing so, it +can intercept some or all calls to functions such as +<code>speak()</code> and <code>stop()</code> and provide an alternate +implementation. Extensions are free to use any available web technology +to provide speech, including streaming audio from a server, HTML5 audio, +Native Client, or Flash. An extension could even do something different +with the utterances, like display closed captions in a pop-up window or +send them as log messages to a remote server.</p> + +<p>To provide TTS, an extension must first declare all voices it provides +in the extension manifest, like this:</p> + +<pre>{ + "name": "My TTS Provider", + "version": "1.0", + <b>"permissions": ["experimental"] + "tts": { + "voices": [ + { + "voiceName": "Alice", + "locale": "en-US", + "gender": "female" + }, + { + "voiceName": "Pat", + "locale": "en-US" + } + ] + },</b> + "background_page": "background.html", +}</pre> + +<p>An extension can specify any number of voices. The three +parameters—<code>voiceName</code>, <code>locale</code>, +and <code>gender</code>—are all optional. If they are all unspecified, +the extension will handle all speech from all clients. If any of them +are specified, they can be used to filter speech requests. For +example, if a voice only supports French, it should set the locale to +'fr' (or something more specific like 'fr-FR') so that only utterances +in that locale are routed to that extension.</p> + +<p>To handle speech calls, the extension should register listeners +for <code>onSpeak</code> and <code>onStop</code>, like this:</p> + +<pre>var speakListener = function(utterance, options, callback) { + ... + callback(); +}; +var stopListener = function() { + ... +}; +chrome.experimental.tts.onSpeak.addListener(speakListener); +chrome.experimental.tts.onStop.addListener(stopListener);</pre> + +<p class="warning"><b>Important:</b> Don't forget to call the callback +function from your speak listener!</p> + +<p>If an extension does not register listeners for both +<code>onSpeak</code> and <code>onStop</code>, it will not intercept any +speech calls, regardless of what is in the manifest. + +<p>The decision of whether or not to send a given speech request to an +extension is based solely on whether the extension supports the given voice +parameters in its manifest and has registered listeners +for <code>onSpeak</code> and <code>onStop</code>. In other words, +there's no way for an extension to receive a speech request and +dynamically decide whether to handle it or not.</p> diff --git a/chrome/common/extensions/docs/static/getstarted.html b/chrome/common/extensions/docs/static/getstarted.html index 1121b58..f1ec273 100644 --- a/chrome/common/extensions/docs/static/getstarted.html +++ b/chrome/common/extensions/docs/static/getstarted.html @@ -65,7 +65,6 @@ to the toolbar of Google Chrome. <img src="images/toolsmenu.gif" width="29" height="29" alt="" style="margin-top:0" /> and choosing <b>Tools > Extensions</b>. - (On Mac, use <b>Window > Extensions</b>.) </li> <li> diff --git a/chrome/common/extensions/docs/static/i18n.html b/chrome/common/extensions/docs/static/i18n.html index 4d0f9b3..abe5c9e 100644 --- a/chrome/common/extensions/docs/static/i18n.html +++ b/chrome/common/extensions/docs/static/i18n.html @@ -265,7 +265,7 @@ Here's an example of using <code>@@bidi_*</code> messages in a CSS file: <pre> body { - <b>dir: __MSG_@@bidi_dir__;</b> + <b>direction: __MSG_@@bidi_dir__;</b> } div#header { diff --git a/chrome/common/extensions/docs/static/override.html b/chrome/common/extensions/docs/static/override.html index 6a4848d..83bbd5d 100644 --- a/chrome/common/extensions/docs/static/override.html +++ b/chrome/common/extensions/docs/static/override.html @@ -70,6 +70,11 @@ specify "spanning" mode for the <a href="manifest.html#incognito">incognito</a> manifest property. </p> +<p class="note"> +<b>Note:</b> +You cannot override the New Tab page in incognito windows. +</p> + <p> The following screenshots show the default New Tab page next to a custom New Tab page. diff --git a/chrome/common/extensions/docs/static/pageAction.html b/chrome/common/extensions/docs/static/pageAction.html index 3def87e..0ca6fea 100644 --- a/chrome/common/extensions/docs/static/pageAction.html +++ b/chrome/common/extensions/docs/static/pageAction.html @@ -46,7 +46,7 @@ like this: "name": "My extension", ... <b>"page_action": { - "default_icon": "icons/foo.png", <em>// <b>required</b></em> + "default_icon": "icons/foo.png", <em>// optional</em> "default_title": "Do action", <em>// optional; shown in tooltip</em> "default_popup": "popup.html" <em>// optional</em> }</b>, @@ -57,8 +57,8 @@ like this: <p> Like browser actions, -page actions have an icon and -can also have a tooltip and popup; +page actions can have an icon, +a tooltip, and popup; they can't have badges, however. In addition, page actions can appear and disappear. You can find information about icons, tooltips, and popups @@ -95,15 +95,6 @@ follow these guidelines:</p> for features that make sense for most pages. Use <a href="browserAction.html">browser actions</a> instead. - <li><b>Do</b> use icons - that are slightly lighter weight - than <a href="browserAction.html#icon">browser action icons</a>. - Most icons that Chrome displays - in the location bar - are smaller than 19 pixels. - If the edge pixels are used, - they are usually only used - for a faint shadow. <li><b>Don't</b> constantly animate your icon. That's just annoying. </ul> diff --git a/chrome/common/extensions/docs/static/permission_warnings.html b/chrome/common/extensions/docs/static/permission_warnings.html index 4671f58..b70280f 100644 --- a/chrome/common/extensions/docs/static/permission_warnings.html +++ b/chrome/common/extensions/docs/static/permission_warnings.html @@ -109,7 +109,7 @@ brings up the following warning: <p> It can be surprising when adding a permission such as "tabs" results in the seemingly unrelated warning -that the extension can access your browsing history. +that the extension can access your browsing activity. The reason for the warning is that although the <code>chrome.tabs</code> API might be used only to open new tabs, @@ -174,22 +174,30 @@ that trigger them. </td> <td> <!-- HasEffectiveBrowsingHistoryPermission --> - "history" or "tabs" permission + "history" permission </td> <td> <p> - The "tabs" permission is required by the - <a href="tabs.html"><code>chrome.tabs</code></a> and - <a href="windows.html"><code>chrome.windows</code></a> modules. - </p> - <p> The "history" permission is required by <a href="history.html"><code>chrome.history</code></a>. </p> + </td> +</tr> + +<tr> + <td style="font-weight:bold"> + <!-- IDS_EXTENSION_PROMPT_WARNING_TABS --> + Your tabs and browsing activity + </td> + <td> + <!-- HasEffectiveBrowsingHistoryPermission --> + "tabs" permission + </td> + <td> <p> - Adding "tabs" to an existing extension - that already has "history", or vice versa, - doesn't cause a warning when the extension is autoupdated. + The "tabs" permission is required by the + <a href="tabs.html"><code>chrome.tabs</code></a> and + <a href="windows.html"><code>chrome.windows</code></a> modules. </p> </td> </tr> diff --git a/chrome/common/extensions/docs/static/themes.html b/chrome/common/extensions/docs/static/themes.html index 0d04779..651a74d 100644 --- a/chrome/common/extensions/docs/static/themes.html +++ b/chrome/common/extensions/docs/static/themes.html @@ -66,7 +66,7 @@ file for a theme: Colors are in RGB format. To find the strings you can use within the "colors" field, look for kColor* strings in -<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/browser_theme_provider.cc"><code>browser_theme_provider.cc</code></a>. +<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/themes/browser_theme_provider.cc"><code>browser_theme_provider.cc</code></a>. </p> <h3 id="images">images</h3> @@ -75,7 +75,7 @@ look for kColor* strings in Image resources use paths relative to the root of the extension. You can override any of the images that are specified by <code>kThemeableImages</code> in -<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/browser_theme_provider.cc"><code>browser_theme_provider.cc</code></a>. +<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/themes/browser_theme_provider.cc"><code>browser_theme_provider.cc</code></a>. Just remove the "IDR_" and convert the remaining characters to lowercase. For example, <code>IDR_THEME_NTP_BACKGROUND</code> @@ -92,7 +92,7 @@ properties such as background alignment, background repeat, and an alternate logo. To see the properties and the values they can have, see -<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/browser_theme_provider.cc"><code>browser_theme_provider.cc</code></a>. +<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/themes/browser_theme_provider.cc"><code>browser_theme_provider.cc</code></a>. <!-- [PENDING: We should flesh this out.] --> </p> @@ -106,7 +106,7 @@ because images don't work across platforms and are brittle in the case of adding new buttons. To find the strings you can use within the "tints" field, look for kTint* strings in -<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/browser_theme_provider.cc"><code>browser_theme_provider.cc</code></a>. +<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/themes/browser_theme_provider.cc"><code>browser_theme_provider.cc</code></a>. </p> <p> diff --git a/chrome/common/extensions/docs/static/tut_debugging.html b/chrome/common/extensions/docs/static/tut_debugging.html index 20d46c5..7713e90 100644 --- a/chrome/common/extensions/docs/static/tut_debugging.html +++ b/chrome/common/extensions/docs/static/tut_debugging.html @@ -38,7 +38,7 @@ in the Extensions page. find the extension files and load them. If you don't have a handy copy of the files, extract them from this - <a href="examples/tutorials/getstarted/getstarted.zip">ZIP file</a>. + <a href="examples/tutorials/getstarted.zip">ZIP file</a>. See Getting Started if you need <a href="getstarted.html#load-ext">instructions for loading the extension</a>. diff --git a/chrome/common/extensions/docs/tabs.html b/chrome/common/extensions/docs/tabs.html index 91e75e6..1708562 100644 --- a/chrome/common/extensions/docs/tabs.html +++ b/chrome/common/extensions/docs/tabs.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -274,7 +284,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a href="#global-methods">Methods</a> <ol> <li> <a href="#method-captureVisibleTab">captureVisibleTab</a> @@ -308,7 +318,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a href="#global-events">Events</a> <ol> <li> <a href="#event-onAttached">onAttached</a> @@ -420,8 +430,8 @@ For other examples and for help in viewing the source code, see </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a name="global-methods"></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -495,6 +505,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -598,6 +618,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -656,6 +686,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -666,6 +706,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -726,6 +776,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -812,6 +872,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -903,6 +973,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1008,6 +1088,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1018,6 +1108,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1082,6 +1182,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1240,6 +1350,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1298,6 +1418,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1356,6 +1486,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1414,6 +1554,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1472,6 +1622,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1482,6 +1642,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1542,6 +1712,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1628,6 +1808,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1717,6 +1907,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1777,6 +1977,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1863,6 +2073,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1953,6 +2173,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2056,6 +2286,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2114,6 +2354,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2172,6 +2422,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2182,6 +2442,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2240,6 +2510,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2362,6 +2642,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2422,6 +2712,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2510,6 +2810,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2599,6 +2909,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2659,6 +2979,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2758,6 +3088,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2848,6 +3188,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2936,6 +3286,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3025,6 +3385,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3085,6 +3455,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3173,6 +3553,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3263,6 +3653,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3366,6 +3766,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3424,6 +3834,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3482,6 +3902,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3492,6 +3922,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3550,6 +3990,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3673,6 +4123,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3778,6 +4238,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3836,6 +4306,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3846,6 +4326,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3906,6 +4396,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3992,6 +4492,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -4083,6 +4593,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -4143,6 +4663,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -4266,6 +4796,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -4326,6 +4866,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -4386,6 +4936,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div> @@ -4443,6 +5003,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -4535,6 +5105,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -4627,6 +5207,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -4732,6 +5322,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -4790,6 +5390,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -4848,6 +5458,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -4858,6 +5478,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -4918,6 +5548,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -5004,6 +5644,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -5029,10 +5679,9 @@ For other examples and for help in viewing the source code, see </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a name="global-events"></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a name="event-onAttached"></a> @@ -5048,10 +5697,11 @@ For other examples and for help in viewing the source code, see <p>Fired when a tab is attached to a window, for example because it was moved between windows.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>tabId</var> <em> @@ -5104,14 +5754,24 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div><div> - <div> + </div><div> + <div> <dt> <var>attachInfo</var> <em> @@ -5211,6 +5871,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -5271,6 +5941,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -5281,15 +5961,25 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -5306,10 +5996,11 @@ For other examples and for help in viewing the source code, see <p>Fires when a tab is created. Note that the tab's URL may not be set at the time this event fires, but you can listen to onUpdated events to be notified when a URL is set.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>tab</var> <em> @@ -5360,15 +6051,25 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -5385,10 +6086,11 @@ For other examples and for help in viewing the source code, see <p>Fired when a tab is detached from a window, for example because it is being moved between windows.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>tabId</var> <em> @@ -5441,14 +6143,24 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div><div> - <div> + </div><div> + <div> <dt> <var>detachInfo</var> <em> @@ -5548,6 +6260,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -5608,6 +6330,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -5618,15 +6350,25 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -5643,10 +6385,11 @@ For other examples and for help in viewing the source code, see <p>Fires when a tab is moved within a window. Only one move event is fired, representing the tab the user directly moved. Move events are not fired for the other tabs that must move in response. This event is not fired when a tab is moved between windows. For that, see <a href="#event-onDetached">onDetached</a>.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>tabId</var> <em> @@ -5699,14 +6442,24 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div><div> - <div> + </div><div> + <div> <dt> <var>moveInfo</var> <em> @@ -5806,6 +6559,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -5866,6 +6629,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -5926,6 +6699,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -5936,15 +6719,25 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -5961,10 +6754,11 @@ For other examples and for help in viewing the source code, see <p>Fires when a tab is closed.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>tabId</var> <em> @@ -6017,14 +6811,24 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div><div> - <div> + </div><div> + <div> <dt> <var>removeInfo</var> <em> @@ -6122,6 +6926,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -6132,15 +6946,25 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -6157,10 +6981,11 @@ For other examples and for help in viewing the source code, see <p>Fires when the selected tab in a window changes.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>tabId</var> <em> @@ -6211,14 +7036,24 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div><div> - <div> + </div><div> + <div> <dt> <var>selectInfo</var> <em> @@ -6316,6 +7151,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -6326,15 +7171,25 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -6351,10 +7206,11 @@ For other examples and for help in viewing the source code, see <p>Fires when a tab is updated.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>tabId</var> <em> @@ -6407,14 +7263,24 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div><div> - <div> + </div><div> + <div> <dt> <var>changeInfo</var> <em> @@ -6510,6 +7376,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -6568,6 +7444,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -6626,6 +7512,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -6636,14 +7532,24 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div><div> - <div> + </div><div> + <div> <dt> <var>tab</var> <em> @@ -6694,15 +7600,25 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> @@ -6817,6 +7733,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -6875,6 +7801,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -6933,6 +7869,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -6991,6 +7937,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -7049,6 +8005,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -7107,6 +8073,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -7165,6 +8141,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -7223,6 +8209,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -7281,6 +8277,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -7339,6 +8345,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -7349,6 +8365,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> diff --git a/chrome/common/extensions/docs/template/api_template.html b/chrome/common/extensions/docs/template/api_template.html index 1b47011..ae5a94d 100644 --- a/chrome/common/extensions/docs/template/api_template.html +++ b/chrome/common/extensions/docs/template/api_template.html @@ -21,7 +21,8 @@ <span class="enum" jsdisplay="enum">enumerated</span> <span id="typeTemplate"> <span jsdisplay="getTypeRef($this)"> - <a jsvalues=".href: getTypeRefPage($this) + '#type-' + getTypeRef($this)" jscontent="getTypeRef($this)"> Type</a> + <a jsvalues=".href: getTypeRefPage($this) + '#type-' + getTypeRef($this)" + jscontent="getTypeRef($this)"> Type</a> </span> <span jsdisplay="!getTypeRef($this)"> <span jsdisplay="isArray($this)"> @@ -63,6 +64,20 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd jsdisplay="$this.type === 'object' && + $this.functions && $this.functions.length > 0" + jsvalues="$scope:id"> + <div transclude="methodsTemplate"></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd jsdisplay="$this.type === 'object' && + $this.events && $this.events.length > 0" + jsvalues="$scope:id"> + <div transclude="eventsTemplate"></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd jsdisplay="isFunction($this) && $this.parameters && $this.name != 'callback'"> @@ -257,23 +272,23 @@ </ol> </li> <li jsdisplay="functions && functions.length > 0"> - <a href="#methods">Methods</a> + <a jsvalues=".href:'#' + getAnchorName('global', 'methods')">Methods</a> <ol> <li jsselect="functions.sort(sortByName)" jsdisplay="!($this.nodoc)"> <a jscontent="name" - jsvalues=".href:'#method-' + name" + jsvalues=".href:'#' + getAnchorName('method', name)" href="#method-anchor">methodName</a> </li> </ol> </li> <li jsdisplay="events && events.length > 0"> - <a href="#events">Events</a> + <a jsvalues=".href:'#' + getAnchorName('global', 'events')">Events</a> <ol> <li jsselect="events.sort(sortByName)" jsdisplay="!($this.nodoc)"> <a jscontent="name" - jsvalues=".href:'#event-' + name" + jsvalues=".href:'#' + getAnchorName('event', name)" href="#event-anchor">eventName</a> </li> </ol> @@ -303,7 +318,7 @@ <div id="static"></div> <!-- API PAGE --> - <div class="apiPage" jsselect="apiDefinition"> + <div class="apiPage" jsselect="apiDefinition" jsvalues="$scope:''"> <a name="apiReference"></a> <h2 jscontent="'API reference: ' + getModuleName()">API reference: chrome.apiname </h2> @@ -326,19 +341,20 @@ </div> <!-- /apiGroup --> <!-- METHODS --> - <div jsdisplay="functions && functions.length > 0" class="apiGroup" id="methods"> - <a name="methods"></a> - <h3>Methods</h3> + <div id="methodsTemplate" class="apiGroup" + jsdisplay="$this.functions && $this.functions.length > 0"> + <a jsvalues=".name:getAnchorName('global', 'methods', $scope)"></a> + <h3 jscontent="$scope ? 'Methods of ' + $scope : 'Methods'">Methods</h3> <!-- iterates over all functions --> <div class="apiItem" jsselect="functions.sort(sortByName)" jsdisplay="!($this.nodoc)"> - <a jsvalues=".name:'method-' + name"></a> <!-- method-anchor --> + <a jsvalues=".name:getAnchorName('method', name, $scope)"></a> <!-- method-anchor --> <h4 jscontent="name">method name</h4> <div class="summary"><span jsdisplay="returns" jscontent="getTypeName(returns)">void</span> <!-- Note: intentionally longer 80 columns --> - <span jscontent="getFullyQualifiedFunctionName($this)">chrome.module.methodName</span>(<span jsselect="parameters" jsvalues="class:optional ? 'optional' : ''"><span jsdisplay="$index">, </span><span jscontent="getTypeName($this)"></span> + <span jscontent="getFullyQualifiedFunctionName($scope, $this)">chrome.module.methodName</span>(<span jsselect="parameters" jsvalues="class:optional ? 'optional' : ''"><span jsdisplay="$index">, </span><span jscontent="getTypeName($this)"></span> <var><span jscontent="$this.name"></span></var></span>)</div> <div class="description"> @@ -348,7 +364,7 @@ </p> <!-- PARAMETERS --> - <h4>Parameters</h4> + <h4 jsdisplay="$this.parameters && $this.parameters.length > 0">Parameters</h4> <dl> <div jsselect="parameters"> <div transclude="valueTemplate"> @@ -403,19 +419,19 @@ </div> <!-- /apiGroup --> <!-- EVENTS --> - <div jsdisplay="events && events.length > 0" class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup" + jsdisplay="$this.events && $this.events.length > 0"> + <a jsvalues=".name:getAnchorName('global', 'events', $scope)"></a> + <h3 jscontent="$scope ? 'Events of ' + $scope : 'Events'">Events</h3> <!-- iterates over all events --> - <div jsselect="events.sort(sortByName)" class="apiItem" + <div class="apiItem" jsselect="$this.events.sort(sortByName)" jsdisplay="!($this.nodoc)"> - <a jsvalues=".name:'event-' + name"></a> + <a jsvalues=".name:getAnchorName('event', name, $scope)"></a> <h4 jscontent="name">event name</h4> <div class="summary"> <!-- Note: intentionally longer 80 columns --> - <span jscontent="getModuleName() + '.'" class="subdued">chrome.bookmarks</span><span jscontent="name">onEvent</span><span class="subdued">.addListener</span>(function(<span jscontent="getSignatureString(parameters)">Type param1, Type param2</span>) <span class="subdued">{...}</span>); + <span jscontent="(getObjectName($scope) || getModuleName()) + '.'" class="subdued">chrome.bookmarks</span><span jscontent="name">onEvent</span><span class="subdued">.addListener</span>(function(<span jscontent="getSignatureString($this.parameters)">Type param1, Type param2</span>) <span class="subdued">{...}</span>); </div> <div class="description"> @@ -425,14 +441,15 @@ </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div jsselect="parameters"> - <div transclude="valueTemplate"> + <div jsdisplay="parameters && parameters.length > 0"> + <h4>Parameters</h4> + <dl> + <div jsselect="parameters"> + <div transclude="valueTemplate"> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/themes.html b/chrome/common/extensions/docs/themes.html index 56c5cf0..d2eafef 100644 --- a/chrome/common/extensions/docs/themes.html +++ b/chrome/common/extensions/docs/themes.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -280,7 +290,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -288,7 +298,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -379,7 +389,7 @@ file for a theme: Colors are in RGB format. To find the strings you can use within the "colors" field, look for kColor* strings in -<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/browser_theme_provider.cc"><code>browser_theme_provider.cc</code></a>. +<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/themes/browser_theme_provider.cc"><code>browser_theme_provider.cc</code></a>. </p> <h3 id="images">images</h3> @@ -388,7 +398,7 @@ look for kColor* strings in Image resources use paths relative to the root of the extension. You can override any of the images that are specified by <code>kThemeableImages</code> in -<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/browser_theme_provider.cc"><code>browser_theme_provider.cc</code></a>. +<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/themes/browser_theme_provider.cc"><code>browser_theme_provider.cc</code></a>. Just remove the "IDR_" and convert the remaining characters to lowercase. For example, <code>IDR_THEME_NTP_BACKGROUND</code> @@ -405,7 +415,7 @@ properties such as background alignment, background repeat, and an alternate logo. To see the properties and the values they can have, see -<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/browser_theme_provider.cc"><code>browser_theme_provider.cc</code></a>. +<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/themes/browser_theme_provider.cc"><code>browser_theme_provider.cc</code></a>. <!-- [PENDING: We should flesh this out.] --> </p> @@ -419,7 +429,7 @@ because images don't work across platforms and are brittle in the case of adding new buttons. To find the strings you can use within the "tints" field, look for kTint* strings in -<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/browser_theme_provider.cc"><code>browser_theme_provider.cc</code></a>. +<a href="http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/themes/browser_theme_provider.cc"><code>browser_theme_provider.cc</code></a>. </p> <p> @@ -486,8 +496,8 @@ Community-written documentation to help you write themes is here: </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -562,10 +572,9 @@ Community-written documentation to help you write themes is here: </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -583,14 +592,15 @@ Community-written documentation to help you write themes is here: </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/tut_analytics.html b/chrome/common/extensions/docs/tut_analytics.html index 4c695ff..47368aa 100644 --- a/chrome/common/extensions/docs/tut_analytics.html +++ b/chrome/common/extensions/docs/tut_analytics.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -302,7 +312,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -310,7 +320,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -554,8 +564,8 @@ extension.</p> </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -630,10 +640,9 @@ extension.</p> </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -651,14 +660,15 @@ extension.</p> </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/tut_debugging.html b/chrome/common/extensions/docs/tut_debugging.html index 3111f76..896d392 100644 --- a/chrome/common/extensions/docs/tut_debugging.html +++ b/chrome/common/extensions/docs/tut_debugging.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -295,7 +305,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -303,7 +313,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -368,7 +378,7 @@ in the Extensions page. find the extension files and load them. If you don't have a handy copy of the files, extract them from this - <a href="examples/tutorials/getstarted/getstarted.zip">ZIP file</a>. + <a href="examples/tutorials/getstarted.zip">ZIP file</a>. See Getting Started if you need <a href="getstarted.html#load-ext">instructions for loading the extension</a>. @@ -602,8 +612,8 @@ of Getting Started. </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -678,10 +688,9 @@ of Getting Started. </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -699,14 +708,15 @@ of Getting Started. </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/tut_oauth.html b/chrome/common/extensions/docs/tut_oauth.html index 1d21c96..e3ee096 100644 --- a/chrome/common/extensions/docs/tut_oauth.html +++ b/chrome/common/extensions/docs/tut_oauth.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -292,7 +302,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -300,7 +310,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -544,8 +554,8 @@ Sample extensions that use these techniques are available in the Chromium source </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -620,10 +630,9 @@ Sample extensions that use these techniques are available in the Chromium source </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -641,14 +650,15 @@ Sample extensions that use these techniques are available in the Chromium source </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/tutorials.html b/chrome/common/extensions/docs/tutorials.html index 8657aed..8f55e51 100644 --- a/chrome/common/extensions/docs/tutorials.html +++ b/chrome/common/extensions/docs/tutorials.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -267,7 +277,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -275,7 +285,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -357,8 +367,8 @@ more specialized topics: </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -433,10 +443,9 @@ more specialized topics: </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -454,14 +463,15 @@ more specialized topics: </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/whats_new.html b/chrome/common/extensions/docs/whats_new.html index 9e2b8ed..31f2485 100644 --- a/chrome/common/extensions/docs/whats_new.html +++ b/chrome/common/extensions/docs/whats_new.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -267,7 +277,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -275,7 +285,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -469,8 +479,8 @@ No API or manifest changes worth noting. </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -545,10 +555,9 @@ No API or manifest changes worth noting. </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -566,14 +575,15 @@ No API or manifest changes worth noting. </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/docs/windows.html b/chrome/common/extensions/docs/windows.html index 6de42ce..a6cb357 100644 --- a/chrome/common/extensions/docs/windows.html +++ b/chrome/common/extensions/docs/windows.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -281,7 +291,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a href="#global-methods">Methods</a> <ol> <li> <a href="#method-create">create</a> @@ -301,7 +311,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a href="#global-events">Events</a> <ol> <li> <a href="#event-onCreated">onCreated</a> @@ -475,6 +485,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -486,8 +506,8 @@ For other examples and for help in viewing the source code, see </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a name="global-methods"></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -607,6 +627,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -665,6 +695,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -723,6 +763,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -781,6 +831,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -839,6 +899,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -897,6 +967,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -955,6 +1035,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1013,6 +1103,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1023,6 +1123,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1083,6 +1193,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1169,6 +1289,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1260,6 +1390,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1320,6 +1460,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1408,6 +1558,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1544,6 +1704,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1554,6 +1724,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1614,6 +1794,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1713,6 +1903,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1803,6 +2003,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1891,6 +2101,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -1981,6 +2201,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2069,6 +2299,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2160,6 +2400,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2220,6 +2470,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2343,6 +2603,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2448,6 +2718,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2506,6 +2786,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2564,6 +2854,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2622,6 +2922,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2680,6 +2990,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2690,6 +3010,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2750,6 +3080,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2838,6 +3178,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -2863,10 +3213,9 @@ For other examples and for help in viewing the source code, see </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a name="global-events"></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a name="event-onCreated"></a> @@ -2882,10 +3231,11 @@ For other examples and for help in viewing the source code, see <p>Fired when a window is created.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>window</var> <em> @@ -2936,15 +3286,25 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -2961,10 +3321,11 @@ For other examples and for help in viewing the source code, see <p>Fired when the currently focused window changes. Will be chrome.windows.WINDOW_ID_NONE if all chrome windows have lost focus. Note: On some Linux window managers, WINDOW_ID_NONE will always be sent immediately preceding a switch from one chrome window to another.</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>windowId</var> <em> @@ -3015,15 +3376,25 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div><div class="apiItem"> @@ -3040,10 +3411,11 @@ For other examples and for help in viewing the source code, see <p>Fired when a window is removed (closed).</p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> <dt> <var>windowId</var> <em> @@ -3094,15 +3466,25 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> </dd> </div> - </div> - </dl> - + </div> + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> @@ -3217,6 +3599,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3275,6 +3667,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3333,6 +3735,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3391,6 +3803,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3449,6 +3871,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3507,6 +3939,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3576,6 +4018,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3634,6 +4086,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3692,6 +4154,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> @@ -3702,6 +4174,16 @@ For other examples and for help in viewing the source code, see </dl> </dd> + <!-- OBJECT METHODS --> + <dd style="display: none; "> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd style="display: none; "> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd style="display: none; "> <div></div> diff --git a/chrome/common/extensions/docs/xhr.html b/chrome/common/extensions/docs/xhr.html index 4710c3e..b740325 100644 --- a/chrome/common/extensions/docs/xhr.html +++ b/chrome/common/extensions/docs/xhr.html @@ -81,6 +81,16 @@ </dl> </dd> + <!-- OBJECT METHODS --> + <dd> + <div></div> + </dd> + + <!-- OBJECT EVENT FIELDS --> + <dd> + <div></div> + </dd> + <!-- FUNCTION PARAMETERS --> <dd> <div></div> @@ -267,7 +277,7 @@ </ol> </li> <li> - <a href="#methods">Methods</a> + <a>Methods</a> <ol> <li> <a href="#method-anchor">methodName</a> @@ -275,7 +285,7 @@ </ol> </li> <li> - <a href="#events">Events</a> + <a>Events</a> <ol> <li> <a href="#event-anchor">eventName</a> @@ -487,8 +497,8 @@ prefer HTTPS whenever possible. </div> <!-- /apiGroup --> <!-- METHODS --> - <div class="apiGroup" id="methods"> - <a name="methods"></a> + <div id="methodsTemplate" class="apiGroup"> + <a></a> <h3>Methods</h3> <!-- iterates over all functions --> @@ -563,10 +573,9 @@ prefer HTTPS whenever possible. </div> <!-- /apiGroup --> <!-- EVENTS --> - <div class="apiGroup"> - <a name="events"></a> - <h3 id="events">Events</h3> - + <div id="eventsTemplate" class="apiGroup"> + <a></a> + <h3>Events</h3> <!-- iterates over all events --> <div class="apiItem"> <a></a> @@ -584,14 +593,15 @@ prefer HTTPS whenever possible. </p> <!-- PARAMETERS --> - <h4>Parameters</h4> - <dl> - <div> + <div> + <h4>Parameters</h4> + <dl> <div> + <div> + </div> </div> - </div> - </dl> - + </dl> + </div> </div> <!-- /decription --> </div> <!-- /apiItem --> diff --git a/chrome/common/extensions/extension.cc b/chrome/common/extensions/extension.cc index bdbb33a..fb96f92 100644 --- a/chrome/common/extensions/extension.cc +++ b/chrome/common/extensions/extension.cc @@ -6,7 +6,6 @@ #include <algorithm> -#include "app/l10n_util.h" #include "base/base64.h" #include "base/basictypes.h" #include "base/command_line.h" @@ -18,6 +17,7 @@ #include "base/singleton.h" #include "base/stl_util-inl.h" #include "base/third_party/nss/blapi.h" +#include "base/string16.h" #include "base/string_number_conversions.h" #include "base/utf_string_conversions.h" #include "base/values.h" @@ -30,6 +30,8 @@ #include "chrome/common/extensions/extension_error_utils.h" #include "chrome/common/extensions/extension_l10n_util.h" #include "chrome/common/extensions/extension_resource.h" +#include "chrome/common/extensions/extension_sidebar_defaults.h" +#include "chrome/common/extensions/extension_sidebar_utils.h" #include "chrome/common/extensions/user_script.h" #include "chrome/common/url_constants.h" #include "googleurl/src/url_util.h" @@ -37,6 +39,7 @@ #include "grit/generated_resources.h" #include "net/base/registry_controlled_domain.h" #include "third_party/skia/include/core/SkBitmap.h" +#include "ui/base/l10n/l10n_util.h" #include "webkit/glue/image_decoder.h" namespace keys = extension_manifest_keys; @@ -194,6 +197,7 @@ const int Extension::kIconSizes[] = { const int Extension::kPageActionIconMaxSize = 19; const int Extension::kBrowserActionIconMaxSize = 19; +const int Extension::kSidebarIconMaxSize = 16; // Explicit permissions -- permission declaration required. const char Extension::kBackgroundPermission[] = "background"; @@ -226,7 +230,7 @@ const Extension::Permission Extension::kPermissions[] = { { kManagementPermission, IDS_EXTENSION_PROMPT_WARNING_MANAGEMENT }, { kNotificationPermission, 0 }, { kProxyPermission, 0 }, - { kTabPermission, IDS_EXTENSION_PROMPT_WARNING_BROWSING_HISTORY }, + { kTabPermission, IDS_EXTENSION_PROMPT_WARNING_TABS }, { kUnlimitedStoragePermission, 0 }, { kWebstorePrivatePermission, 0 }, }; @@ -804,6 +808,52 @@ ExtensionAction* Extension::LoadExtensionActionHelper( return result.release(); } +ExtensionSidebarDefaults* Extension::LoadExtensionSidebarDefaults( + const DictionaryValue* extension_sidebar, std::string* error) { + scoped_ptr<ExtensionSidebarDefaults> result(new ExtensionSidebarDefaults()); + + std::string default_icon; + // Read sidebar's |default_icon| (optional). + if (extension_sidebar->HasKey(keys::kSidebarDefaultIcon)) { + if (!extension_sidebar->GetString(keys::kSidebarDefaultIcon, + &default_icon) || + default_icon.empty()) { + *error = errors::kInvalidSidebarDefaultIconPath; + return NULL; + } + result->set_default_icon_path(default_icon); + } + + // Read sidebar's |default_title| (optional). + string16 default_title; + if (extension_sidebar->HasKey(keys::kSidebarDefaultTitle)) { + if (!extension_sidebar->GetString(keys::kSidebarDefaultTitle, + &default_title)) { + *error = errors::kInvalidSidebarDefaultTitle; + return NULL; + } + } + result->set_default_title(default_title); + + // Read sidebar's |default_page| (optional). + std::string default_page; + if (extension_sidebar->HasKey(keys::kSidebarDefaultPage)) { + if (!extension_sidebar->GetString(keys::kSidebarDefaultPage, + &default_page) || + default_page.empty()) { + *error = errors::kInvalidSidebarDefaultPage; + return NULL; + } + GURL url = extension_sidebar_utils::ResolveRelativePath( + default_page, this, error); + if (!url.is_valid()) + return NULL; + result->set_default_page(url); + } + + return result.release(); +} + bool Extension::ContainsNonThemeKeys(const DictionaryValue& source) const { for (DictionaryValue::key_iterator key = source.begin_keys(); key != source.end_keys(); ++key) { @@ -1194,8 +1244,7 @@ void Extension::DecodeIconFromPath(const FilePath& icon_path, std::string file_contents; if (!file_util::ReadFileToString(icon_path, &file_contents)) { - LOG(ERROR) << "Could not read icon file: " - << WideToUTF8(icon_path.ToWStringHack()); + LOG(ERROR) << "Could not read icon file: " << icon_path.LossyDisplayName(); return; } @@ -1207,7 +1256,7 @@ void Extension::DecodeIconFromPath(const FilePath& icon_path, *decoded = decoder.Decode(data, file_contents.length()); if (decoded->empty()) { LOG(ERROR) << "Could not decode icon file: " - << WideToUTF8(icon_path.ToWStringHack()); + << icon_path.LossyDisplayName(); return; } @@ -1253,8 +1302,7 @@ bool Extension::InitFromValue(const DictionaryValue& source, bool require_key, } // Make a copy of the manifest so we can store it in prefs. - manifest_value_.reset( - static_cast<DictionaryValue*>(source.DeepCopy())); + manifest_value_.reset(source.DeepCopy()); // Initialize the URL. extension_url_ = @@ -1426,8 +1474,7 @@ bool Extension::InitFromValue(const DictionaryValue& source, bool require_key, return false; } } - theme_images_.reset( - static_cast<DictionaryValue*>(images_value->DeepCopy())); + theme_images_.reset(images_value->DeepCopy()); } DictionaryValue* colors_value; @@ -1445,7 +1492,7 @@ bool Extension::InitFromValue(const DictionaryValue& source, bool require_key, ((color_list->GetSize() != 3) && ((color_list->GetSize() != 4) || // For RGBA, the fourth item must be a real or int alpha value - (!color_list->GetReal(3, &alpha) && + (!color_list->GetDouble(3, &alpha) && !color_list->GetInteger(3, &alpha_int)))) || // For both RGB and RGBA, the first three items must be ints (R,G,B) !color_list->GetInteger(0, &color) || @@ -1455,8 +1502,7 @@ bool Extension::InitFromValue(const DictionaryValue& source, bool require_key, return false; } } - theme_colors_.reset( - static_cast<DictionaryValue*>(colors_value->DeepCopy())); + theme_colors_.reset(colors_value->DeepCopy()); } DictionaryValue* tints_value; @@ -1469,22 +1515,21 @@ bool Extension::InitFromValue(const DictionaryValue& source, bool require_key, int vi; if (!tints_value->GetListWithoutPathExpansion(*iter, &tint_list) || tint_list->GetSize() != 3 || - !(tint_list->GetReal(0, &v) || tint_list->GetInteger(0, &vi)) || - !(tint_list->GetReal(1, &v) || tint_list->GetInteger(1, &vi)) || - !(tint_list->GetReal(2, &v) || tint_list->GetInteger(2, &vi))) { + !(tint_list->GetDouble(0, &v) || tint_list->GetInteger(0, &vi)) || + !(tint_list->GetDouble(1, &v) || tint_list->GetInteger(1, &vi)) || + !(tint_list->GetDouble(2, &v) || tint_list->GetInteger(2, &vi))) { *error = errors::kInvalidThemeTints; return false; } } - theme_tints_.reset( - static_cast<DictionaryValue*>(tints_value->DeepCopy())); + theme_tints_.reset(tints_value->DeepCopy()); } DictionaryValue* display_properties_value; if (theme_value->GetDictionary(keys::kThemeDisplayProperties, &display_properties_value)) { theme_display_properties_.reset( - static_cast<DictionaryValue*>(display_properties_value->DeepCopy())); + display_properties_value->DeepCopy()); } return true; @@ -1813,6 +1858,9 @@ bool Extension::InitFromValue(const DictionaryValue& source, bool require_key, #if defined(TOUCH_UI) page != chrome::kChromeUIKeyboardHost && #endif +#if defined(OS_CHROMEOS) + page != chrome::kChromeUIActivationMessageHost && +#endif page != chrome::kChromeUIBookmarksHost && page != chrome::kChromeUIHistoryHost) || !overrides->GetStringWithoutPathExpansion(*iter, &val)) { @@ -1852,6 +1900,22 @@ bool Extension::InitFromValue(const DictionaryValue& source, bool require_key, devtools_url_ = GetResourceURL(devtools_str); } + // Initialize sidebar action (optional). + if (source.HasKey(keys::kSidebar)) { + DictionaryValue* sidebar_value; + if (!source.GetDictionary(keys::kSidebar, &sidebar_value)) { + *error = errors::kInvalidSidebar; + return false; + } + if (!HasApiPermission(Extension::kExperimentalPermission)) { + *error = errors::kSidebarExperimental; + return false; + } + sidebar_defaults_.reset(LoadExtensionSidebarDefaults(sidebar_value, error)); + if (!sidebar_defaults_.get()) + return false; // Failed to parse sidebar definition. + } + // Initialize text-to-speech voices (optional). if (source.HasKey(keys::kTts)) { DictionaryValue* tts_dict; @@ -2023,7 +2087,7 @@ static std::string SizeToString(const gfx::Size& max_size) { // static void Extension::SetScriptingWhitelist( - const std::vector<std::string>& whitelist) { + const Extension::ScriptingWhitelist& whitelist) { ScriptingWhitelist* current_whitelist = ExtensionConfig::GetInstance()->whitelist(); current_whitelist->clear(); @@ -2033,6 +2097,11 @@ void Extension::SetScriptingWhitelist( } } +// static +const Extension::ScriptingWhitelist* Extension::GetScriptingWhitelist() { + return ExtensionConfig::GetInstance()->whitelist(); +} + void Extension::SetCachedImage(const ExtensionResource& source, const SkBitmap& image, const gfx::Size& original_size) const { @@ -2188,21 +2257,16 @@ bool Extension::HasMultipleUISurfaces() const { return num_surfaces > 1; } -// static -bool Extension::CanExecuteScriptOnPage( - const GURL& page_url, bool can_execute_script_everywhere, - const std::vector<URLPattern>* host_permissions, - UserScript* script, - std::string* error) { - DCHECK(!(host_permissions && script)) << "Shouldn't specify both"; - +bool Extension::CanExecuteScriptOnPage(const GURL& page_url, + UserScript* script, + std::string* error) const { // The gallery is special-cased as a restricted URL for scripting to prevent // access to special JS bindings we expose to the gallery (and avoid things // like extensions removing the "report abuse" link). // TODO(erikkay): This seems like the wrong test. Shouldn't we we testing // against the store app extent? if ((page_url.host() == GURL(Extension::ChromeStoreLaunchURL()).host()) && - !can_execute_script_everywhere && + !CanExecuteScriptEverywhere() && !CommandLine::ForCurrentProcess()->HasSwitch( switches::kAllowScriptingGallery)) { if (error) @@ -2210,14 +2274,14 @@ bool Extension::CanExecuteScriptOnPage( return false; } - if (host_permissions) { - for (size_t i = 0; i < host_permissions->size(); ++i) { - if ((*host_permissions)[i].MatchesUrl(page_url)) - return true; - } - } - if (script) { - if (script->MatchesUrl(page_url)) + // If a script is specified, use its matches. + if (script) + return script->MatchesUrl(page_url); + + // Otherwise, see if this extension has permission to execute script + // programmatically on pages. + for (size_t i = 0; i < host_permissions_.size(); ++i) { + if (host_permissions_[i].MatchesUrl(page_url)) return true; } @@ -2257,6 +2321,14 @@ bool Extension::HasFullPermissions() const { return plugins().size() > 0; } +bool Extension::ShowConfigureContextMenus() const { + // Don't show context menu for component extensions. We might want to show + // options for component extension button but now there is no component + // extension with options. All other menu items like uninstall have + // no sense for component extensions. + return location() != Extension::COMPONENT; +} + bool Extension::IsAPIPermission(const std::string& str) const { for (size_t i = 0; i < Extension::kNumPermissions; ++i) { if (str == Extension::kPermissions[i].name) { @@ -2296,8 +2368,7 @@ ExtensionInfo::ExtensionInfo(const DictionaryValue* manifest, extension_path(path), extension_location(location) { if (manifest) - extension_manifest.reset( - static_cast<DictionaryValue*>(manifest->DeepCopy())); + extension_manifest.reset(manifest->DeepCopy()); } ExtensionInfo::~ExtensionInfo() {} diff --git a/chrome/common/extensions/extension.h b/chrome/common/extensions/extension.h index 4c82fd6..0edb6e2 100644 --- a/chrome/common/extensions/extension.h +++ b/chrome/common/extensions/extension.h @@ -20,12 +20,13 @@ #include "chrome/common/extensions/extension_icon_set.h" #include "chrome/common/extensions/user_script.h" #include "chrome/common/extensions/url_pattern.h" -#include "gfx/size.h" #include "googleurl/src/gurl.h" +#include "ui/gfx/size.h" class DictionaryValue; class ExtensionAction; class ExtensionResource; +class ExtensionSidebarDefaults; class SkBitmap; class Version; @@ -151,6 +152,7 @@ class Extension : public base::RefCountedThreadSafe<Extension> { // Max size (both dimensions) for browser and page actions. static const int kPageActionIconMaxSize; static const int kBrowserActionIconMaxSize; + static const int kSidebarIconMaxSize; // Each permission is a module that the extension is permitted to use. // @@ -306,22 +308,9 @@ class Extension : public base::RefCountedThreadSafe<Extension> { // ExtensionService::IsDownloadFromGallery static std::string ChromeStoreLaunchURL(); - // Helper function that consolidates the check for whether the script can - // execute into one location. |page_url| is the page that is the candidate - // for running the script, |can_execute_script_everywhere| specifies whether - // the extension is on the whitelist, |allowed_pages| is a vector of - // URLPatterns, listing what access the extension has, |script| is the script - // pointer (if content script) and |error| is an optional parameter, which - // will receive the error string listing why access was denied. - static bool CanExecuteScriptOnPage( - const GURL& page_url, - bool can_execute_script_everywhere, - const std::vector<URLPattern>* allowed_pages, - UserScript* script, - std::string* error); - // Adds an extension to the scripting whitelist. Used for testing only. static void SetScriptingWhitelist(const ScriptingWhitelist& whitelist); + static const ScriptingWhitelist* GetScriptingWhitelist(); // Returns true if the extension has the specified API permission. static bool HasApiPermission(const std::set<std::string>& api_permissions, @@ -362,6 +351,9 @@ class Extension : public base::RefCountedThreadSafe<Extension> { // having an NPAPI plugin). bool HasFullPermissions() const; + // Whether context menu should be shown for page and browser actions. + bool ShowConfigureContextMenus() const; + // Returns the Homepage URL for this extension. If homepage_url was not // specified in the manifest, this returns the Google Gallery URL. For // third-party extensions, this returns a blank GURL. @@ -378,6 +370,7 @@ class Extension : public base::RefCountedThreadSafe<Extension> { // Gets the fully resolved absolute launch URL. GURL GetFullLaunchURL() const; + // Image cache related methods. These are only valid on the UI thread and // not maintained by this class. See ImageLoadingTracker for usage. The // |original_size| parameter should be the size of the image at |source| @@ -389,6 +382,18 @@ class Extension : public base::RefCountedThreadSafe<Extension> { const gfx::Size& max_size) const; SkBitmap GetCachedImage(const ExtensionResource& source, const gfx::Size& max_size) const; + + // Returns true if this extension can execute script on a page. If a + // UserScript object is passed, permission to run that specific script is + // checked (using its matches list). Otherwise, permission to execute script + // programmatically is checked (using the extension's host permission). + // + // This method is also aware of certain special pages that extensions are + // usually not allowed to run script on. + bool CanExecuteScriptOnPage(const GURL& page_url, + UserScript* script, + std::string* error) const; + // Returns true if this extension is a COMPONENT extension, or if it is // on the whitelist of extensions that can script all pages. bool CanExecuteScriptEverywhere() const; @@ -414,6 +419,9 @@ class Extension : public base::RefCountedThreadSafe<Extension> { const UserScriptList& content_scripts() const { return content_scripts_; } ExtensionAction* page_action() const { return page_action_.get(); } ExtensionAction* browser_action() const { return browser_action_.get(); } + ExtensionSidebarDefaults* sidebar_defaults() const { + return sidebar_defaults_.get(); + } const std::vector<PluginInfo>& plugins() const { return plugins_; } const GURL& background_url() const { return background_url_; } const GURL& options_url() const { return options_url_; } @@ -533,6 +541,11 @@ class Extension : public base::RefCountedThreadSafe<Extension> { ExtensionAction* LoadExtensionActionHelper( const DictionaryValue* extension_action, std::string* error); + // Helper method to load an ExtensionSidebarDefaults from the sidebar manifest + // entry. + ExtensionSidebarDefaults* LoadExtensionSidebarDefaults( + const DictionaryValue* sidebar, std::string* error); + // Calculates the effective host permissions from the permissions and content // script petterns. void InitEffectiveHostPermissions(); @@ -626,6 +639,9 @@ class Extension : public base::RefCountedThreadSafe<Extension> { // The extension's browser action, if any. scoped_ptr<ExtensionAction> browser_action_; + // The extension's sidebar, if any. + scoped_ptr<ExtensionSidebarDefaults> sidebar_defaults_; + // Optional list of NPAPI plugins and associated properties. std::vector<PluginInfo> plugins_; @@ -687,7 +703,11 @@ class Extension : public base::RefCountedThreadSafe<Extension> { // absolute. If relative, it is relative to web_origin. std::string launch_web_url_; - // The type of container to launch into. + // The window type that an app's manifest specifies to launch into. + // This is not always the window type an app will open into, because + // users can override the way each app launches. See + // ExtensionPrefs::GetLaunchContainer(), which looks at a per-app pref + // to decide what container an app will launch in. extension_misc::LaunchContainer launch_container_; // The default size of the container when launching. Only respected for diff --git a/chrome/common/extensions/extension_action.cc b/chrome/common/extensions/extension_action.cc index 7139fb2..0cb4a0f 100644 --- a/chrome/common/extensions/extension_action.cc +++ b/chrome/common/extensions/extension_action.cc @@ -6,15 +6,15 @@ #include <algorithm> -#include "app/resource_bundle.h" #include "base/logging.h" #include "chrome/common/badge_util.h" -#include "gfx/canvas_skia.h" -#include "gfx/rect.h" #include "googleurl/src/gurl.h" #include "grit/app_resources.h" #include "third_party/skia/include/core/SkBitmap.h" #include "third_party/skia/include/effects/SkGradientShader.h" +#include "ui/base/resource/resource_bundle.h" +#include "ui/gfx/canvas_skia.h" +#include "ui/gfx/rect.h" namespace { diff --git a/chrome/common/extensions/extension_action_unittest.cc b/chrome/common/extensions/extension_action_unittest.cc index 4413bfe..b9588bf 100644 --- a/chrome/common/extensions/extension_action_unittest.cc +++ b/chrome/common/extensions/extension_action_unittest.cc @@ -7,10 +7,10 @@ #include "base/path_service.h" #include "chrome/common/chrome_paths.h" #include "chrome/common/extensions/extension_action.h" -#include "gfx/skia_util.h" #include "googleurl/src/gurl.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/skia/include/core/SkBitmap.h" +#include "ui/gfx/skia_util.h" #include "webkit/glue/image_decoder.h" using gfx::BitmapsAreEqual; diff --git a/chrome/common/extensions/extension_constants.cc b/chrome/common/extensions/extension_constants.cc index dd15afa..dbde37b 100644 --- a/chrome/common/extensions/extension_constants.cc +++ b/chrome/common/extensions/extension_constants.cc @@ -52,6 +52,10 @@ const char* kPluginsPath = "path"; const char* kPluginsPublic = "public"; const char* kPublicKey = "key"; const char* kRunAt = "run_at"; +const char* kSidebar = "sidebar"; +const char* kSidebarDefaultIcon = "default_icon"; +const char* kSidebarDefaultPage = "default_page"; +const char* kSidebarDefaultTitle = "default_title"; const char* kSignature = "signature"; const char* kTheme = "theme"; const char* kThemeColors = "colors"; @@ -225,6 +229,14 @@ const char* kInvalidPluginsPublic = "Invalid value for 'plugins[*].public'."; const char* kInvalidRunAt = "Invalid value for 'content_scripts[*].run_at'."; +const char* kInvalidSidebar = + "Invalid value for 'sidebar'."; +const char* kInvalidSidebarDefaultIconPath = + "Invalid value for 'sidebar.default_icon'."; +const char* kInvalidSidebarDefaultPage = + "Invalid value for 'sidebar.default_page'."; +const char* kInvalidSidebarDefaultTitle = + "Invalid value for 'sidebar.default_title'."; const char* kInvalidSignature = "Value 'signature' is missing or invalid."; const char* kInvalidTheme = @@ -288,6 +300,9 @@ const char* kOneUISurfaceOnly = "Only one of 'browser_action', 'page_action', and 'app' can be specified."; const char* kReservedMessageFound = "Reserved key * found in message catalog."; +const char* kSidebarExperimental = + "You must request the 'experimental' permission in order to use the" + " Sidebar API."; const char* kThemesCannotContainExtensions = "A theme cannot contain extensions code."; #if defined(OS_CHROMEOS) @@ -317,4 +332,8 @@ namespace extension_misc { const char* kBookmarkManagerId = "eemcgdkfndhakfknompkggombfjjjeno"; const char* kWebStoreAppId = "ahfgeienlihckogmohjhadlkjgocpleb"; const char* kAppsPromoHistogram = "Extensions.AppsPromo"; +#if defined(OS_CHROMEOS) +const char* kAccessExtensionPath = + "/usr/share/chromeos-assets/accessibility/extensions"; +#endif } diff --git a/chrome/common/extensions/extension_constants.h b/chrome/common/extensions/extension_constants.h index 7f09630..6d91451 100644 --- a/chrome/common/extensions/extension_constants.h +++ b/chrome/common/extensions/extension_constants.h @@ -57,6 +57,10 @@ namespace extension_manifest_keys { extern const char* kPluginsPublic; extern const char* kPublicKey; extern const char* kRunAt; + extern const char* kSidebar; + extern const char* kSidebarDefaultIcon; + extern const char* kSidebarDefaultPage; + extern const char* kSidebarDefaultTitle; extern const char* kSignature; extern const char* kTheme; extern const char* kThemeColors; @@ -160,6 +164,10 @@ namespace extension_manifest_errors { extern const char* kInvalidPluginsPath; extern const char* kInvalidPluginsPublic; extern const char* kInvalidRunAt; + extern const char* kInvalidSidebar; + extern const char* kInvalidSidebarDefaultIconPath; + extern const char* kInvalidSidebarDefaultPage; + extern const char* kInvalidSidebarDefaultTitle; extern const char* kInvalidSignature; extern const char* kInvalidTheme; extern const char* kInvalidThemeColors; @@ -191,6 +199,7 @@ namespace extension_manifest_errors { extern const char* kMultipleOverrides; extern const char* kOneUISurfaceOnly; extern const char* kReservedMessageFound; + extern const char* kSidebarExperimental; extern const char* kThemesCannotContainExtensions; extern const char* kWebContentMustBeEnabled; #if defined(OS_CHROMEOS) @@ -256,8 +265,15 @@ namespace extension_misc { PROMO_LAUNCH_WEB_STORE, PROMO_CLOSE, PROMO_EXPIRE, - PROMO_BUCKET_BOUNDARY = PROMO_EXPIRE + 1 + PROMO_SEEN, + PROMO_BUCKET_BOUNDARY }; + +#if defined(OS_CHROMEOS) + // The directory path on a ChromeOS device where accessibility extensions are + // stored. + extern const char* kAccessExtensionPath; +#endif } // extension_misc #endif // CHROME_COMMON_EXTENSIONS_EXTENSION_CONSTANTS_H_ diff --git a/chrome/common/extensions/extension_file_util.cc b/chrome/common/extensions/extension_file_util.cc index e8636be..7aef372 100644 --- a/chrome/common/extensions/extension_file_util.cc +++ b/chrome/common/extensions/extension_file_util.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -7,20 +7,25 @@ #include <map> #include <vector> -#include "app/l10n_util.h" #include "base/file_util.h" #include "base/logging.h" +#include "base/metrics/histogram.h" +#include "base/path_service.h" #include "base/scoped_temp_dir.h" +#include "base/threading/thread_restrictions.h" #include "base/utf_string_conversions.h" +#include "chrome/common/chrome_paths.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/extension_action.h" #include "chrome/common/extensions/extension_l10n_util.h" #include "chrome/common/extensions/extension_constants.h" #include "chrome/common/extensions/extension_resource.h" +#include "chrome/common/extensions/extension_sidebar_defaults.h" #include "chrome/common/json_value_serializer.h" #include "grit/generated_resources.h" #include "net/base/escape.h" #include "net/base/file_stream.h" +#include "ui/base/l10n/l10n_util.h" namespace errors = extension_manifest_errors; @@ -156,7 +161,7 @@ bool ValidateExtension(Extension* extension, std::string* error) { if (!file_util::PathExists(image_path)) { *error = l10n_util::GetStringFUTF8(IDS_EXTENSION_INVALID_IMAGE_PATH, - WideToUTF16(image_path.ToWStringHack())); + image_path.LossyDisplayName()); return false; } } @@ -198,7 +203,7 @@ bool ValidateExtension(Extension* extension, std::string* error) { *error = l10n_util::GetStringFUTF8( IDS_EXTENSION_LOAD_PLUGIN_PATH_FAILED, - WideToUTF16(plugin.path.ToWStringHack())); + plugin.path.LossyDisplayName()); return false; } } @@ -245,7 +250,7 @@ bool ValidateExtension(Extension* extension, std::string* error) { *error = l10n_util::GetStringFUTF8( IDS_EXTENSION_LOAD_BACKGROUND_PAGE_FAILED, - WideToUTF16(page_path.ToWStringHack())); + page_path.LossyDisplayName()); return false; } } @@ -260,7 +265,22 @@ bool ValidateExtension(Extension* extension, std::string* error) { *error = l10n_util::GetStringFUTF8( IDS_EXTENSION_LOAD_OPTIONS_PAGE_FAILED, - WideToUTF16(options_path.ToWStringHack())); + options_path.LossyDisplayName()); + return false; + } + } + + // Validate sidebar default page location. + ExtensionSidebarDefaults* sidebar_defaults = extension->sidebar_defaults(); + if (sidebar_defaults && sidebar_defaults->default_page().is_valid()) { + FilePath page_path = ExtensionURLToRelativeFilePath( + sidebar_defaults->default_page()); + const FilePath path = extension->GetResource(page_path).GetFilePath(); + if (path.empty() || !file_util::PathExists(path)) { + *error = + l10n_util::GetStringFUTF8( + IDS_EXTENSION_LOAD_SIDEBAR_PAGE_FAILED, + page_path.LossyDisplayName()); return false; } } @@ -292,15 +312,21 @@ void GarbageCollectExtensions( FilePath extension_path; for (extension_path = enumerator.Next(); !extension_path.value().empty(); extension_path = enumerator.Next()) { - std::string extension_id = WideToASCII( - extension_path.BaseName().ToWStringHack()); + std::string extension_id; + + FilePath basename = extension_path.BaseName(); + if (IsStringASCII(basename.value())) { + extension_id = UTF16ToASCII(basename.LossyDisplayName()); + if (!Extension::IdIsValid(extension_id)) + extension_id.clear(); + } // Delete directories that aren't valid IDs. - if (!Extension::IdIsValid(extension_id)) { + if (extension_id.empty()) { LOG(WARNING) << "Invalid extension ID encountered in extensions " - "directory: " << extension_id; + "directory: " << basename.value(); VLOG(1) << "Deleting invalid extension directory " - << WideToASCII(extension_path.ToWStringHack()) << "."; + << extension_path.value() << "."; file_util::Delete(extension_path, true); // Recursive. continue; } @@ -313,7 +339,7 @@ void GarbageCollectExtensions( // complete, for example, when a plugin is in use at uninstall time. if (iter == extension_paths.end()) { VLOG(1) << "Deleting unreferenced install for directory " - << WideToASCII(extension_path.ToWStringHack()) << "."; + << extension_path.LossyDisplayName() << "."; file_util::Delete(extension_path, true); // Recursive. continue; } @@ -328,7 +354,7 @@ void GarbageCollectExtensions( version_dir = versions_enumerator.Next()) { if (version_dir.BaseName() != iter->second.BaseName()) { VLOG(1) << "Deleting old version for directory " - << WideToASCII(version_dir.ToWStringHack()) << "."; + << version_dir.LossyDisplayName() << "."; file_util::Delete(version_dir, true); // Recursive. } } @@ -408,7 +434,7 @@ static bool ValidateLocaleInfo(const Extension& extension, std::string* error) { if (!file_util::PathExists(messages_path)) { *error = base::StringPrintf( "%s %s", errors::kLocalesMessagesFileMissing, - WideToUTF8(messages_path.ToWStringHack()).c_str()); + UTF16ToUTF8(messages_path.LossyDisplayName()).c_str()); return false; } @@ -434,14 +460,14 @@ static bool IsScriptValid(const FilePath& path, !file_util::ReadFileToString(path, &content)) { *error = l10n_util::GetStringFUTF8( message_id, - WideToUTF16(relative_path.ToWStringHack())); + relative_path.LossyDisplayName()); return false; } if (!IsStringUTF8(content)) { *error = l10n_util::GetStringFUTF8( IDS_EXTENSION_BAD_FILE_ENCODING, - WideToUTF16(relative_path.ToWStringHack())); + relative_path.LossyDisplayName()); return false; } @@ -517,4 +543,70 @@ FilePath ExtensionURLToRelativeFilePath(const GURL& url) { return path; } +FilePath GetUserDataTempDir() { + // We do file IO in this function, but only when the current profile's + // Temp directory has never been used before, or in a rare error case. + // Developers are not likely to see these situations often, so do an + // explicit thread check. + base::ThreadRestrictions::AssertIOAllowed(); + + // Getting chrome::DIR_USER_DATA_TEMP is failing. Use histogram to see why. + // TODO(skerner): Fix the problem, and remove this code. crbug.com/70056 + enum DirectoryCreationResult { + SUCCESS = 0, + + CANT_GET_PARENT_PATH, + CANT_GET_UDT_PATH, + NOT_A_DIRECTORY, + CANT_CREATE_DIR, + CANT_WRITE_TO_PATH, + + UNSET, + NUM_DIRECTORY_CREATION_RESULTS + }; + + // All paths should set |result|. + DirectoryCreationResult result = UNSET; + + FilePath temp_path; + if (!PathService::Get(chrome::DIR_USER_DATA_TEMP, &temp_path)) { + FilePath parent_path; + if (!PathService::Get(chrome::DIR_USER_DATA, &parent_path)) + result = CANT_GET_PARENT_PATH; + else + result = CANT_GET_UDT_PATH; + + } else if (file_util::PathExists(temp_path)) { + + // Path exists. Check that it is a directory we can write to. + if (!file_util::DirectoryExists(temp_path)) { + result = NOT_A_DIRECTORY; + + } else if (!file_util::PathIsWritable(temp_path)) { + result = CANT_WRITE_TO_PATH; + + } else { + // Temp is a writable directory. + result = SUCCESS; + } + + } else if (!file_util::CreateDirectory(temp_path)) { + // Path doesn't exist, and we failed to create it. + result = CANT_CREATE_DIR; + + } else { + // Successfully created the Temp directory. + result = SUCCESS; + } + + UMA_HISTOGRAM_ENUMERATION("Extensions.GetUserDataTempDir", + result, + NUM_DIRECTORY_CREATION_RESULTS); + + if (result == SUCCESS) + return temp_path; + + return FilePath(); +} + } // namespace extension_file_util diff --git a/chrome/common/extensions/extension_file_util.h b/chrome/common/extensions/extension_file_util.h index f6a72bc..b26b564 100644 --- a/chrome/common/extensions/extension_file_util.h +++ b/chrome/common/extensions/extension_file_util.h @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -76,6 +76,12 @@ bool CheckForIllegalFilenames(const FilePath& extension_path, // Get a relative file path from a chrome-extension:// URL. FilePath ExtensionURLToRelativeFilePath(const GURL& url); +// Get a path to a temp directory for unpacking an extension. +// This is essentially PathService::Get(chrome::DIR_USER_DATA_TEMP, ...), +// with a histogram that allows us to understand why it is failing. +// Return an empty file path on failure. +FilePath GetUserDataTempDir(); + } // namespace extension_file_util #endif // CHROME_COMMON_EXTENSIONS_EXTENSION_FILE_UTIL_H_ diff --git a/chrome/common/extensions/extension_icon_set.cc b/chrome/common/extensions/extension_icon_set.cc index 1f1dd21..fc1ac58 100644 --- a/chrome/common/extensions/extension_icon_set.cc +++ b/chrome/common/extensions/extension_icon_set.cc @@ -15,7 +15,7 @@ void ExtensionIconSet::Clear() { } void ExtensionIconSet::Add(int size, const std::string& path) { - DCHECK(path.size() > 0 && path[0] != '/'); + CHECK(path.size() > 0 && path[0] != '/'); map_[size] = path; } @@ -50,10 +50,14 @@ std::string ExtensionIconSet::Get(int size, MatchType match_type) const { } bool ExtensionIconSet::ContainsPath(const std::string& path) const { - DCHECK(path.size() > 0 && path[0] != '/'); + if (path.empty()) + return false; + + CHECK(path[0] != '/') << + "ExtensionIconSet stores icon paths without leading slash."; + for (IconMap::const_iterator iter = map_.begin(); iter != map_.end(); ++iter) { - LOG(ERROR) << iter->second << " , " << path; if (iter->second == path) return true; } diff --git a/chrome/common/extensions/extension_icon_set_unittest.cc b/chrome/common/extensions/extension_icon_set_unittest.cc index 4da96bc..9bd1ec5 100644 --- a/chrome/common/extensions/extension_icon_set_unittest.cc +++ b/chrome/common/extensions/extension_icon_set_unittest.cc @@ -44,6 +44,7 @@ TEST(ExtensionIconSet, Values) { EXPECT_TRUE(icons.ContainsPath("foo")); EXPECT_TRUE(icons.ContainsPath("bar")); EXPECT_FALSE(icons.ContainsPath("baz")); + EXPECT_FALSE(icons.ContainsPath("")); icons.Clear(); EXPECT_FALSE(icons.ContainsPath("foo")); diff --git a/chrome/common/extensions/extension_l10n_util.cc b/chrome/common/extensions/extension_l10n_util.cc index 994ab83..dff8f5e 100644 --- a/chrome/common/extensions/extension_l10n_util.cc +++ b/chrome/common/extensions/extension_l10n_util.cc @@ -8,7 +8,6 @@ #include <string> #include <vector> -#include "app/l10n_util.h" #include "base/file_util.h" #include "base/linked_ptr.h" #include "base/logging.h" @@ -20,6 +19,7 @@ #include "chrome/common/extensions/extension_message_bundle.h" #include "chrome/common/json_value_serializer.h" #include "chrome/common/url_constants.h" +#include "ui/base/l10n/l10n_util.h" #include "unicode/uloc.h" namespace errors = extension_manifest_errors; diff --git a/chrome/common/extensions/extension_l10n_util_unittest.cc b/chrome/common/extensions/extension_l10n_util_unittest.cc index 0ec7e97..5a318bc 100644 --- a/chrome/common/extensions/extension_l10n_util_unittest.cc +++ b/chrome/common/extensions/extension_l10n_util_unittest.cc @@ -2,7 +2,6 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#include "app/l10n_util.h" #include "base/file_path.h" #include "base/file_util.h" #include "base/linked_ptr.h" @@ -16,6 +15,7 @@ #include "chrome/common/extensions/extension_l10n_util.h" #include "chrome/common/extensions/extension_message_bundle.h" #include "testing/gtest/include/gtest/gtest.h" +#include "ui/base/l10n/l10n_util.h" namespace errors = extension_manifest_errors; namespace keys = extension_manifest_keys; diff --git a/chrome/common/extensions/extension_localization_peer.cc b/chrome/common/extensions/extension_localization_peer.cc index e04bd0b..a01b601 100644 --- a/chrome/common/extensions/extension_localization_peer.cc +++ b/chrome/common/extensions/extension_localization_peer.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -66,17 +66,18 @@ void ExtensionLocalizationPeer::OnReceivedData(const char* data, int len) { } void ExtensionLocalizationPeer::OnCompletedRequest( - const URLRequestStatus& status, + const net::URLRequestStatus& status, const std::string& security_info, const base::Time& completion_time) { // Make sure we delete ourselves at the end of this call. scoped_ptr<ExtensionLocalizationPeer> this_deleter(this); // Give sub-classes a chance at altering the data. - if (status.status() != URLRequestStatus::SUCCESS) { + if (status.status() != net::URLRequestStatus::SUCCESS) { // We failed to load the resource. original_peer_->OnReceivedResponse(response_info_, true); - URLRequestStatus status(URLRequestStatus::CANCELED, net::ERR_ABORTED); + net::URLRequestStatus status(net::URLRequestStatus::CANCELED, + net::ERR_ABORTED); original_peer_->OnCompletedRequest(status, security_info, completion_time); return; } diff --git a/chrome/common/extensions/extension_localization_peer_unittest.cc b/chrome/common/extensions/extension_localization_peer_unittest.cc index dc67d5b..87cea6b 100644 --- a/chrome/common/extensions/extension_localization_peer_unittest.cc +++ b/chrome/common/extensions/extension_localization_peer_unittest.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -69,7 +69,7 @@ class MockResourceLoaderBridgePeer MOCK_METHOD1(OnDownloadedData, void(int len)); MOCK_METHOD2(OnReceivedData, void(const char* data, int len)); MOCK_METHOD3(OnCompletedRequest, void( - const URLRequestStatus& status, + const net::URLRequestStatus& status, const std::string& security_info, const base::Time& completion_time)); @@ -141,10 +141,10 @@ TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestBadURLRequestStatus) { EXPECT_CALL(*original_peer_, OnReceivedResponse(_, true)); EXPECT_CALL(*original_peer_, OnCompletedRequest( - IsURLRequestEqual(URLRequestStatus::CANCELED), "", base::Time())); + IsURLRequestEqual(net::URLRequestStatus::CANCELED), "", base::Time())); - URLRequestStatus status; - status.set_status(URLRequestStatus::FAILED); + net::URLRequestStatus status; + status.set_status(net::URLRequestStatus::FAILED); filter_peer->OnCompletedRequest(status, "", base::Time()); } @@ -157,10 +157,10 @@ TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestEmptyData) { EXPECT_CALL(*original_peer_, OnReceivedResponse(_, true)); EXPECT_CALL(*original_peer_, OnCompletedRequest( - IsURLRequestEqual(URLRequestStatus::SUCCESS), "", base::Time())); + IsURLRequestEqual(net::URLRequestStatus::SUCCESS), "", base::Time())); - URLRequestStatus status; - status.set_status(URLRequestStatus::SUCCESS); + net::URLRequestStatus status; + status.set_status(net::URLRequestStatus::SUCCESS); filter_peer->OnCompletedRequest(status, "", base::Time()); } @@ -178,10 +178,11 @@ TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestNoCatalogs) { EXPECT_CALL(*original_peer_, OnReceivedResponse(_, true)).Times(2); EXPECT_CALL(*original_peer_, OnCompletedRequest( - IsURLRequestEqual(URLRequestStatus::SUCCESS), "", base::Time())).Times(2); + IsURLRequestEqual( + net::URLRequestStatus::SUCCESS), "", base::Time())).Times(2); - URLRequestStatus status; - status.set_status(URLRequestStatus::SUCCESS); + net::URLRequestStatus status; + status.set_status(net::URLRequestStatus::SUCCESS); filter_peer->OnCompletedRequest(status, "", base::Time()); // Test if Send gets called again (it shouldn't be) when first call returned @@ -215,10 +216,10 @@ TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestWithCatalogs) { EXPECT_CALL(*original_peer_, OnReceivedResponse(_, true)); EXPECT_CALL(*original_peer_, OnCompletedRequest( - IsURLRequestEqual(URLRequestStatus::SUCCESS), "", base::Time())); + IsURLRequestEqual(net::URLRequestStatus::SUCCESS), "", base::Time())); - URLRequestStatus status; - status.set_status(URLRequestStatus::SUCCESS); + net::URLRequestStatus status; + status.set_status(net::URLRequestStatus::SUCCESS); filter_peer->OnCompletedRequest(status, "", base::Time()); } @@ -245,9 +246,9 @@ TEST_F(ExtensionLocalizationPeerTest, OnCompletedRequestReplaceMessagesFails) { EXPECT_CALL(*original_peer_, OnReceivedResponse(_, true)); EXPECT_CALL(*original_peer_, OnCompletedRequest( - IsURLRequestEqual(URLRequestStatus::SUCCESS), "", base::Time())); + IsURLRequestEqual(net::URLRequestStatus::SUCCESS), "", base::Time())); - URLRequestStatus status; - status.set_status(URLRequestStatus::SUCCESS); + net::URLRequestStatus status; + status.set_status(net::URLRequestStatus::SUCCESS); filter_peer->OnCompletedRequest(status, "", base::Time()); } diff --git a/chrome/common/extensions/extension_manifests_unittest.cc b/chrome/common/extensions/extension_manifests_unittest.cc index f7c8f27..a6bc71f 100644 --- a/chrome/common/extensions/extension_manifests_unittest.cc +++ b/chrome/common/extensions/extension_manifests_unittest.cc @@ -8,11 +8,13 @@ #include "base/path_service.h" #include "base/scoped_ptr.h" #include "base/string_util.h" +#include "base/utf_string_conversions.h" #include "chrome/common/chrome_paths.h" #include "chrome/common/chrome_switches.h" #include "chrome/common/extensions/extension.h" #include "chrome/common/extensions/extension_constants.h" #include "chrome/common/extensions/extension_error_utils.h" +#include "chrome/common/extensions/extension_sidebar_defaults.h" #include "chrome/common/json_value_serializer.h" #include "testing/gtest/include/gtest/gtest.h" @@ -271,6 +273,40 @@ TEST_F(ExtensionManifestTest, DevToolsExtensions) { *CommandLine::ForCurrentProcess() = old_command_line; } +TEST_F(ExtensionManifestTest, Sidebar) { + LoadAndExpectError("sidebar.json", + errors::kExperimentalFlagRequired); + + CommandLine old_command_line = *CommandLine::ForCurrentProcess(); + CommandLine::ForCurrentProcess()->AppendSwitch( + switches::kEnableExperimentalExtensionApis); + + LoadAndExpectError("sidebar_no_permissions.json", + errors::kSidebarExperimental); + + LoadAndExpectError("sidebar_icon_empty.json", + errors::kInvalidSidebarDefaultIconPath); + LoadAndExpectError("sidebar_icon_invalid_type.json", + errors::kInvalidSidebarDefaultIconPath); + LoadAndExpectError("sidebar_page_empty.json", + errors::kInvalidSidebarDefaultPage); + LoadAndExpectError("sidebar_page_invalid_type.json", + errors::kInvalidSidebarDefaultPage); + LoadAndExpectError("sidebar_title_invalid_type.json", + errors::kInvalidSidebarDefaultTitle); + + scoped_refptr<Extension> extension(LoadAndExpectSuccess("sidebar.json")); + ASSERT_TRUE(extension->sidebar_defaults() != NULL); + EXPECT_EQ(extension->sidebar_defaults()->default_title(), + ASCIIToUTF16("Default title")); + EXPECT_EQ(extension->sidebar_defaults()->default_icon_path(), + "icon.png"); + EXPECT_EQ(extension->url().spec() + "sidebar.html", + extension->sidebar_defaults()->default_page().spec()); + + *CommandLine::ForCurrentProcess() = old_command_line; +} + TEST_F(ExtensionManifestTest, DisallowHybridApps) { LoadAndExpectError("disallow_hybrid_1.json", errors::kHostedAppsCannotIncludeExtensionFeatures); diff --git a/chrome/common/extensions/extension_message_bundle.cc b/chrome/common/extensions/extension_message_bundle.cc index ea28c83..e6e00af 100644 --- a/chrome/common/extensions/extension_message_bundle.cc +++ b/chrome/common/extensions/extension_message_bundle.cc @@ -7,7 +7,6 @@ #include <string> #include <vector> -#include "app/l10n_util.h" #include "base/hash_tables.h" #include "base/i18n/rtl.h" #include "base/lazy_instance.h" @@ -20,6 +19,7 @@ #include "chrome/common/extensions/extension_constants.h" #include "chrome/common/extensions/extension_error_utils.h" #include "chrome/common/extensions/extension_l10n_util.h" +#include "ui/base/l10n/l10n_util.h" namespace errors = extension_manifest_errors; diff --git a/chrome/common/extensions/extension_resource.cc b/chrome/common/extensions/extension_resource.cc index e2a5e24..cc88382 100644 --- a/chrome/common/extensions/extension_resource.cc +++ b/chrome/common/extensions/extension_resource.cc @@ -19,6 +19,8 @@ ExtensionResource::ExtensionResource(const std::string& extension_id, relative_path_(relative_path) { } +ExtensionResource::~ExtensionResource() {} + const FilePath& ExtensionResource::GetFilePath() const { if (extension_root_.empty() || relative_path_.empty()) { DCHECK(full_resource_path_.empty()); diff --git a/chrome/common/extensions/extension_resource.h b/chrome/common/extensions/extension_resource.h index 86705a8..6fe3773 100644 --- a/chrome/common/extensions/extension_resource.h +++ b/chrome/common/extensions/extension_resource.h @@ -22,6 +22,8 @@ class ExtensionResource { const FilePath& extension_root, const FilePath& relative_path); + ~ExtensionResource(); + // Returns actual path to the resource (default or locale specific). In the // browser process, this will DCHECK if not called on the file thread. To // easily load extension images on the UI thread, see ImageLoadingTracker. diff --git a/chrome/common/extensions/extension_resource_unittest.cc b/chrome/common/extensions/extension_resource_unittest.cc index e7b3ef0..9f47666 100644 --- a/chrome/common/extensions/extension_resource_unittest.cc +++ b/chrome/common/extensions/extension_resource_unittest.cc @@ -4,7 +4,6 @@ #include <algorithm> -#include "app/l10n_util.h" #include "base/file_util.h" #include "base/path_service.h" #include "base/scoped_temp_dir.h" @@ -13,6 +12,7 @@ #include "chrome/common/extensions/extension_l10n_util.h" #include "chrome/common/extensions/extension_resource.h" #include "testing/gtest/include/gtest/gtest.h" +#include "ui/base/l10n/l10n_util.h" TEST(ExtensionResourceTest, CreateEmptyResource) { ExtensionResource resource; diff --git a/chrome/common/extensions/extension_set.cc b/chrome/common/extensions/extension_set.cc new file mode 100644 index 0000000..fcf96e6 --- /dev/null +++ b/chrome/common/extensions/extension_set.cc @@ -0,0 +1,81 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/common/extensions/extension_set.h" + +#include "base/logging.h" +#include "chrome/common/url_constants.h" + +ExtensionSet::ExtensionSet() { +} + +ExtensionSet::~ExtensionSet() { +} + +size_t ExtensionSet::size() const { + return extensions_.size(); +} + +bool ExtensionSet::Contains(const std::string& extension_id) { + return extensions_.find(extension_id) != extensions_.end(); +} + +void ExtensionSet::Insert(const scoped_refptr<const Extension>& extension) { + extensions_[extension->id()] = extension; +} + +void ExtensionSet::Remove(const std::string& id) { + extensions_.erase(id); +} + +std::string ExtensionSet::GetIdByURL(const GURL& url) const { + if (url.SchemeIs(chrome::kExtensionScheme)) + return url.host(); + + const Extension* extension = GetByURL(url); + if (!extension) + return ""; + + return extension->id(); +} + +const Extension* ExtensionSet::GetByURL(const GURL& url) const { + if (url.SchemeIs(chrome::kExtensionScheme)) + return GetByID(url.host()); + + ExtensionMap::const_iterator i = extensions_.begin(); + for (; i != extensions_.end(); ++i) { + if (i->second->web_extent().ContainsURL(url)) + return i->second.get(); + } + + return NULL; +} + +bool ExtensionSet::InSameExtent(const GURL& old_url, + const GURL& new_url) const { + return GetByURL(old_url) == GetByURL(new_url); +} + +const Extension* ExtensionSet::GetByID(const std::string& id) const { + ExtensionMap::const_iterator i = extensions_.find(id); + if (i != extensions_.end()) + return i->second.get(); + else + return NULL; +} + +bool ExtensionSet::ExtensionBindingsAllowed(const GURL& url) const { + if (url.SchemeIs(chrome::kExtensionScheme)) + return true; + + ExtensionMap::const_iterator i = extensions_.begin(); + for (; i != extensions_.end(); ++i) { + if (i->second->location() == Extension::COMPONENT && + i->second->web_extent().ContainsURL(url)) + return true; + } + + return false; +} diff --git a/chrome/common/extensions/extension_set.h b/chrome/common/extensions/extension_set.h new file mode 100644 index 0000000..9d00d1d --- /dev/null +++ b/chrome/common/extensions/extension_set.h @@ -0,0 +1,70 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_COMMON_EXTENSIONS_EXTENSION_SET_H_ +#define CHROME_COMMON_EXTENSIONS_EXTENSION_SET_H_ +#pragma once + +#include <string> +#include <vector> + +#include "base/gtest_prod_util.h" +#include "base/ref_counted.h" +#include "chrome/common/extensions/extension.h" +#include "googleurl/src/gurl.h" + +// The one true extension container. Extensions are identified by their id. +// Only one extension can be in the set with a given ID. +class ExtensionSet { + public: + ExtensionSet(); + ~ExtensionSet(); + + // Gets the number of extensions contained. + size_t size() const; + + // Returns true if the set contains the specified extension. + bool Contains(const std::string& id); + + // Adds the specified extension to the set. The set becomes an owner. Any + // previous extension with the same ID is removed. + void Insert(const scoped_refptr<const Extension>& extension); + + // Removes the specified extension. + void Remove(const std::string& id); + + // Returns the extension ID that the given URL is a part of, or empty if + // none. This includes web URLs that are part of an extension's web extent. + std::string GetIdByURL(const GURL& url) const; + + // Returns the Extension that the given URL is a part of, or NULL if none. + // This includes web URLs that are part of an extension's web extent. + // NOTE: This can return NULL if called before UpdateExtensions receives + // bulk extension data (e.g. if called from + // EventBindings::HandleContextCreated) + const Extension* GetByURL(const GURL& url) const; + + // Returns true if |new_url| is in the extent of the same extension as + // |old_url|. Also returns true if neither URL is in an app. + bool InSameExtent(const GURL& old_url, const GURL& new_url) const; + + // Look up an Extension object by id. + const Extension* GetByID(const std::string& id) const; + + // Returns true if |url| should get extension api bindings and be permitted + // to make api calls. Note that this is independent of what extension + // permissions the given extension has been granted. + bool ExtensionBindingsAllowed(const GURL& url) const; + + private: + FRIEND_TEST_ALL_PREFIXES(ExtensionSetTest, ExtensionSet); + + // static + typedef std::map<std::string, scoped_refptr<const Extension> > ExtensionMap; + ExtensionMap extensions_; + + DISALLOW_COPY_AND_ASSIGN(ExtensionSet); +}; + +#endif // CHROME_COMMON_EXTENSIONS_EXTENSION_SET_H_ diff --git a/chrome/common/extensions/extension_set_unittest.cc b/chrome/common/extensions/extension_set_unittest.cc new file mode 100644 index 0000000..1b85ac5 --- /dev/null +++ b/chrome/common/extensions/extension_set_unittest.cc @@ -0,0 +1,118 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "base/file_path.h" +#include "base/logging.h" +#include "base/ref_counted.h" +#include "base/scoped_ptr.h" +#include "base/values.h" +#include "chrome/common/extensions/extension.h" +#include "chrome/common/extensions/extension_set.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace { + +scoped_refptr<Extension> CreateTestExtension(const std::string& name, + const std::string& launch_url, + const std::string& extent) { +#if defined(OS_WIN) + FilePath path(FILE_PATH_LITERAL("c:\\")); +#else + FilePath path(FILE_PATH_LITERAL("/")); +#endif + path = path.AppendASCII(name); + + DictionaryValue manifest; + manifest.SetString("name", name); + manifest.SetString("version", "1"); + + if (!launch_url.empty()) + manifest.SetString("app.launch.web_url", launch_url); + + if (!extent.empty()) { + ListValue* urls = new ListValue(); + manifest.Set("app.urls", urls); + urls->Append(Value::CreateStringValue(extent)); + } + + const bool kRequireKey = false; + std::string error; + scoped_refptr<Extension> extension( + Extension::Create(path, Extension::INTERNAL, manifest, kRequireKey, + &error)); + EXPECT_TRUE(extension.get()) << error; + return extension; +} + +} // namespace + +TEST(ExtensionSetTest, ExtensionSet) { + scoped_refptr<Extension> ext1(CreateTestExtension( + "a", "https://chrome.google.com/launch", "https://chrome.google.com/")); + + scoped_refptr<Extension> ext2(CreateTestExtension( + "a", "http://code.google.com/p/chromium", + "http://code.google.com/p/chromium/")); + + scoped_refptr<Extension> ext3(CreateTestExtension( + "b", "http://dev.chromium.org/", "http://dev.chromium.org/")); + + scoped_refptr<Extension> ext4(CreateTestExtension("c", "", "")); + + ASSERT_TRUE(ext1 && ext2 && ext3 && ext4); + + ExtensionSet extensions; + + // Add an extension. + extensions.Insert(ext1); + EXPECT_EQ(1u, extensions.size()); + EXPECT_EQ(ext1, extensions.GetByID(ext1->id())); + + // Since extension2 has same ID, it should overwrite extension1. + extensions.Insert(ext2); + EXPECT_EQ(1u, extensions.size()); + EXPECT_EQ(ext2, extensions.GetByID(ext1->id())); + + // Add the other extensions. + extensions.Insert(ext3); + extensions.Insert(ext4); + EXPECT_EQ(3u, extensions.size()); + + // Get extension by its chrome-extension:// URL + EXPECT_EQ(ext2, extensions.GetByURL( + ext2->GetResourceURL("test.html"))); + EXPECT_EQ(ext3, extensions.GetByURL( + ext3->GetResourceURL("test.html"))); + EXPECT_EQ(ext4, extensions.GetByURL( + ext4->GetResourceURL("test.html"))); + + // Get extension by web extent. + EXPECT_EQ(ext2, extensions.GetByURL( + GURL("http://code.google.com/p/chromium/monkey"))); + EXPECT_EQ(ext3, extensions.GetByURL( + GURL("http://dev.chromium.org/design-docs/"))); + EXPECT_FALSE(extensions.GetByURL( + GURL("http://blog.chromium.org/"))); + + // Test InSameExtent(). + EXPECT_TRUE(extensions.InSameExtent( + GURL("http://code.google.com/p/chromium/monkey/"), + GURL("http://code.google.com/p/chromium/"))); + EXPECT_FALSE(extensions.InSameExtent( + GURL("http://code.google.com/p/chromium/"), + GURL("https://code.google.com/p/chromium/"))); + EXPECT_FALSE(extensions.InSameExtent( + GURL("http://code.google.com/p/chromium/"), + GURL("http://dev.chromium.org/design-docs/"))); + + // Both of these should be NULL, which mean true for InSameExtent. + EXPECT_TRUE(extensions.InSameExtent( + GURL("http://www.google.com/"), + GURL("http://blog.chromium.org/"))); + + // Remove one of the extensions. + extensions.Remove(ext2->id()); + EXPECT_EQ(2u, extensions.size()); + EXPECT_FALSE(extensions.GetByID(ext2->id())); +} diff --git a/chrome/common/extensions/extension_sidebar_defaults.h b/chrome/common/extensions/extension_sidebar_defaults.h new file mode 100644 index 0000000..4e475a4 --- /dev/null +++ b/chrome/common/extensions/extension_sidebar_defaults.h @@ -0,0 +1,47 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_COMMON_EXTENSIONS_EXTENSION_SIDEBAR_DEFAULTS_H_ +#define CHROME_COMMON_EXTENSIONS_EXTENSION_SIDEBAR_DEFAULTS_H_ +#pragma once + +#include <string> + +#include "base/string16.h" +#include "googleurl/src/gurl.h" + +// ExtensionSidebarDefaults encapsulates the default parameters of a sidebar, +// as defined in the extension manifest. +class ExtensionSidebarDefaults { + public: + // Default title, stores manifest default_title key value. + void set_default_title(const string16& title) { + default_title_ = title; + } + const string16& default_title() const { return default_title_; } + + // Default icon path, stores manifest default_icon key value. + void set_default_icon_path(const std::string& path) { + default_icon_path_ = path; + } + const std::string& default_icon_path() const { + return default_icon_path_; + } + + // A resolved |url| to extension resource (manifest default_page key value) + // to navigate sidebar to by default. + void set_default_page(const GURL& url) { + default_page_ = url; + } + const GURL& default_page() const { + return default_page_; + } + + private: + string16 default_title_; + std::string default_icon_path_; + GURL default_page_; +}; + +#endif // CHROME_COMMON_EXTENSIONS_EXTENSION_SIDEBAR_DEFAULTS_H_ diff --git a/chrome/common/extensions/extension_sidebar_utils.cc b/chrome/common/extensions/extension_sidebar_utils.cc new file mode 100644 index 0000000..7a419cf --- /dev/null +++ b/chrome/common/extensions/extension_sidebar_utils.cc @@ -0,0 +1,37 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/common/extensions/extension_sidebar_utils.h" + +#include "chrome/common/extensions/extension.h" +#include "chrome/common/extensions/extension_error_utils.h" +#include "googleurl/src/gurl.h" + +namespace { + +// Errors. +const char kInvalidPathError[] = "Invalid path: \"*\"."; + +} // namespace + +namespace extension_sidebar_utils { + +std::string GetExtensionIdByContentId(const std::string& content_id) { + // At the moment, content_id == extension_id. + return content_id; +} + +GURL ResolveRelativePath(const std::string& relative_path, + const Extension* extension, + std::string* error) { + GURL url(extension->GetResourceURL(relative_path)); + if (!url.is_valid()) { + *error = ExtensionErrorUtils::FormatErrorMessage(kInvalidPathError, + relative_path); + return GURL(); + } + return url; +} + +} // namespace extension_sidebar_utils diff --git a/chrome/common/extensions/extension_sidebar_utils.h b/chrome/common/extensions/extension_sidebar_utils.h new file mode 100644 index 0000000..7fca85b --- /dev/null +++ b/chrome/common/extensions/extension_sidebar_utils.h @@ -0,0 +1,28 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_COMMON_EXTENSIONS_EXTENSION_SIDEBAR_UTILS_H_ +#define CHROME_COMMON_EXTENSIONS_EXTENSION_SIDEBAR_UTILS_H_ +#pragma once + +#include <string> + +class Extension; +class GURL; + +namespace extension_sidebar_utils { + +// Returns id of an extension owning a sidebar identified by |content_id|. +std::string GetExtensionIdByContentId(const std::string& content_id); + +// Resolves |relative_path| relative to |extension|'s url. +// In case of any problem, returns an empty invalid GURL and |error| receives +// the corresponding error message. +GURL ResolveRelativePath(const std::string& relative_path, + const Extension* extension, + std::string* error); + +} // namespace extension_sidebar_utils + +#endif // CHROME_COMMON_EXTENSIONS_EXTENSION_SIDEBAR_UTILS_H_ diff --git a/chrome/common/extensions/extension_unittest.cc b/chrome/common/extensions/extension_unittest.cc index 1130302..817062c 100644 --- a/chrome/common/extensions/extension_unittest.cc +++ b/chrome/common/extensions/extension_unittest.cc @@ -8,7 +8,6 @@ #include <gtk/gtk.h> #endif -#include "app/l10n_util.h" #include "base/format_macros.h" #include "base/file_path.h" #include "base/file_util.h" @@ -24,7 +23,6 @@ #include "chrome/common/extensions/extension_resource.h" #include "chrome/common/json_value_serializer.h" #include "chrome/common/url_constants.h" -#include "gfx/codec/png_codec.h" #include "googleurl/src/gurl.h" #include "net/base/mime_sniffer.h" #include "skia/ext/image_operations.h" @@ -32,6 +30,8 @@ #include "net/base/mock_host_resolver.h" #include "testing/gtest/include/gtest/gtest.h" #include "third_party/skia/include/core/SkBitmap.h" +#include "ui/base/l10n/l10n_util.h" +#include "ui/gfx/codec/png_codec.h" namespace keys = extension_manifest_keys; namespace values = extension_manifest_values; @@ -112,7 +112,7 @@ TEST(ExtensionTest, InitFromValueInvalid) { scoped_ptr<DictionaryValue> input_value; // Test missing and invalid versions - input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); + input_value.reset(valid_value->DeepCopy()); input_value->Remove(keys::kVersion, NULL); EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); EXPECT_EQ(errors::kInvalidVersion, error); @@ -122,7 +122,7 @@ TEST(ExtensionTest, InitFromValueInvalid) { EXPECT_EQ(errors::kInvalidVersion, error); // Test missing and invalid names. - input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); + input_value.reset(valid_value->DeepCopy()); input_value->Remove(keys::kName, NULL); EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); EXPECT_EQ(errors::kInvalidName, error); @@ -132,19 +132,19 @@ TEST(ExtensionTest, InitFromValueInvalid) { EXPECT_EQ(errors::kInvalidName, error); // Test invalid description - input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); + input_value.reset(valid_value->DeepCopy()); input_value->SetInteger(keys::kDescription, 42); EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); EXPECT_EQ(errors::kInvalidDescription, error); // Test invalid icons - input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); + input_value.reset(valid_value->DeepCopy()); input_value->SetInteger(keys::kIcons, 42); EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); EXPECT_EQ(errors::kInvalidIcons, error); // Test invalid icon paths - input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); + input_value.reset(valid_value->DeepCopy()); DictionaryValue* icons = NULL; input_value->GetDictionary(keys::kIcons, &icons); ASSERT_FALSE(NULL == icons); @@ -153,13 +153,13 @@ TEST(ExtensionTest, InitFromValueInvalid) { EXPECT_TRUE(MatchPattern(error, errors::kInvalidIconPath)); // Test invalid user scripts list - input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); + input_value.reset(valid_value->DeepCopy()); input_value->SetInteger(keys::kContentScripts, 42); EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); EXPECT_EQ(errors::kInvalidContentScriptsList, error); // Test invalid user script item - input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); + input_value.reset(valid_value->DeepCopy()); ListValue* content_scripts = NULL; input_value->GetList(keys::kContentScripts, &content_scripts); ASSERT_FALSE(NULL == content_scripts); @@ -168,7 +168,7 @@ TEST(ExtensionTest, InitFromValueInvalid) { EXPECT_TRUE(MatchPattern(error, errors::kInvalidContentScript)); // Test missing and invalid matches array - input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); + input_value.reset(valid_value->DeepCopy()); input_value->GetList(keys::kContentScripts, &content_scripts); DictionaryValue* user_script = NULL; content_scripts->GetDictionary(0, &user_script); @@ -195,7 +195,7 @@ TEST(ExtensionTest, InitFromValueInvalid) { EXPECT_TRUE(MatchPattern(error, errors::kInvalidMatch)); // Test missing and invalid files array - input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); + input_value.reset(valid_value->DeepCopy()); input_value->GetList(keys::kContentScripts, &content_scripts); content_scripts->GetDictionary(0, &user_script); user_script->Remove(keys::kJs, NULL); @@ -237,7 +237,7 @@ TEST(ExtensionTest, InitFromValueInvalid) { EXPECT_TRUE(MatchPattern(error, errors::kInvalidCss)); // Test missing and invalid permissions array - input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); + input_value.reset(valid_value->DeepCopy()); EXPECT_TRUE(extension.InitFromValue(*input_value, true, &error)); ListValue* permissions = NULL; input_value->GetList(keys::kPermissions, &permissions); @@ -251,7 +251,7 @@ TEST(ExtensionTest, InitFromValueInvalid) { EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); EXPECT_TRUE(MatchPattern(error, errors::kInvalidPermissions)); - input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); + input_value.reset(valid_value->DeepCopy()); input_value->GetList(keys::kPermissions, &permissions); permissions->Set(0, Value::CreateIntegerValue(24)); EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); @@ -263,7 +263,7 @@ TEST(ExtensionTest, InitFromValueInvalid) { EXPECT_TRUE(extension.InitFromValue(*input_value, true, &error)); // Multiple page actions are not allowed. - input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); + input_value.reset(valid_value->DeepCopy()); DictionaryValue* action = new DictionaryValue; action->SetString(keys::kPageActionId, "MyExtensionActionId"); action->SetString(keys::kName, "MyExtensionActionName"); @@ -275,13 +275,13 @@ TEST(ExtensionTest, InitFromValueInvalid) { EXPECT_STREQ(errors::kInvalidPageActionsListSize, error.c_str()); // Test invalid options page url. - input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); + input_value.reset(valid_value->DeepCopy()); input_value->Set(keys::kOptionsPage, Value::CreateNullValue()); EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); EXPECT_TRUE(MatchPattern(error, errors::kInvalidOptionsPage)); // Test invalid/empty default locale. - input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); + input_value.reset(valid_value->DeepCopy()); input_value->Set(keys::kDefaultLocale, Value::CreateIntegerValue(5)); EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); EXPECT_TRUE(MatchPattern(error, errors::kInvalidDefaultLocale)); @@ -291,7 +291,7 @@ TEST(ExtensionTest, InitFromValueInvalid) { EXPECT_TRUE(MatchPattern(error, errors::kInvalidDefaultLocale)); // Test invalid minimum_chrome_version. - input_value.reset(static_cast<DictionaryValue*>(valid_value->DeepCopy())); + input_value.reset(valid_value->DeepCopy()); input_value->Set(keys::kMinimumChromeVersion, Value::CreateIntegerValue(42)); EXPECT_FALSE(extension.InitFromValue(*input_value, true, &error)); EXPECT_TRUE(MatchPattern(error, errors::kInvalidMinimumChromeVersion)); @@ -486,13 +486,13 @@ TEST(ExtensionTest, LoadPageActionHelper) { scoped_ptr<DictionaryValue> copy; // First remove id key. - copy.reset(static_cast<DictionaryValue*>(input.DeepCopy())); + copy.reset(input.DeepCopy()); copy->Remove(keys::kPageActionId, NULL); action.reset(extension.LoadExtensionActionHelper(copy.get(), &error_msg)); ASSERT_TRUE(NULL != action.get()); // Then remove the name key. It's optional, so no error. - copy.reset(static_cast<DictionaryValue*>(input.DeepCopy())); + copy.reset(input.DeepCopy()); copy->Remove(keys::kName, NULL); action.reset(extension.LoadExtensionActionHelper(copy.get(), &error_msg)); ASSERT_TRUE(NULL != action.get()); @@ -500,7 +500,7 @@ TEST(ExtensionTest, LoadPageActionHelper) { ASSERT_TRUE(error_msg.empty()); // Then remove the icon paths key. - copy.reset(static_cast<DictionaryValue*>(input.DeepCopy())); + copy.reset(input.DeepCopy()); copy->Remove(keys::kPageActionIcons, NULL); action.reset(extension.LoadExtensionActionHelper(copy.get(), &error_msg)); ASSERT_TRUE(NULL != action.get()); diff --git a/chrome/common/extensions/update_manifest.cc b/chrome/common/extensions/update_manifest.cc index c75aa01..d2ceda7 100644 --- a/chrome/common/extensions/update_manifest.cc +++ b/chrome/common/extensions/update_manifest.cc @@ -19,6 +19,10 @@ static const char* kExpectedGupdateProtocol = "2.0"; static const char* kExpectedGupdateXmlns = "http://www.google.com/update2/response"; +UpdateManifest::Result::Result() {} + +UpdateManifest::Result::~Result() {} + UpdateManifest::Results::Results() : daystart_elapsed_seconds(kNoDaystart) {} UpdateManifest::Results::~Results() {} diff --git a/chrome/common/extensions/update_manifest.h b/chrome/common/extensions/update_manifest.h index 16a4f01..89e0f8b 100644 --- a/chrome/common/extensions/update_manifest.h +++ b/chrome/common/extensions/update_manifest.h @@ -36,6 +36,9 @@ class UpdateManifest { // The result of parsing one <app> tag in an xml update check manifest. struct Result { + Result(); + ~Result(); + std::string extension_id; std::string version; std::string browser_min_version; diff --git a/chrome/common/extensions/url_pattern.h b/chrome/common/extensions/url_pattern.h index c0f17af..56deed5 100644 --- a/chrome/common/extensions/url_pattern.h +++ b/chrome/common/extensions/url_pattern.h @@ -114,6 +114,14 @@ class URLPattern { // Parse() instead, which returns success or failure. URLPattern(int valid_schemes, const std::string& pattern); +#if defined(_MSC_VER) && _MSC_VER >= 1600 + // Note: don't use this directly. This exists so URLPattern can be used + // with STL containers. Starting with Visual Studio 2010, we can't have this + // method private and use "friend class std::vector<URLPattern>;" as we used + // to do. + URLPattern(); +#endif + ~URLPattern(); // Gets the bitmask of valid schemes. @@ -201,11 +209,13 @@ class URLPattern { }; private: +#if !(defined(_MSC_VER) && _MSC_VER >= 1600) friend class std::vector<URLPattern>; // Note: don't use this directly. This exists so URLPattern can be used // with STL containers. URLPattern(); +#endif // A bitmask containing the schemes which are considered valid for this // pattern. Parse() uses this to decide whether a pattern contains a valid diff --git a/chrome/common/file_system/file_system_dispatcher.h b/chrome/common/file_system/file_system_dispatcher.h index 21bc792..bc84d2a 100644 --- a/chrome/common/file_system/file_system_dispatcher.h +++ b/chrome/common/file_system/file_system_dispatcher.h @@ -31,7 +31,7 @@ class FileSystemDispatcher : public IPC::Channel::Listener { ~FileSystemDispatcher(); // IPC::Channel::Listener implementation. - bool OnMessageReceived(const IPC::Message& msg); + virtual bool OnMessageReceived(const IPC::Message& msg); bool OpenFileSystem(const GURL& origin_url, fileapi::FileSystemType type, diff --git a/chrome/common/file_system/webfilesystem_callback_dispatcher.cc b/chrome/common/file_system/webfilesystem_callback_dispatcher.cc index 24a162a..f549ade 100644 --- a/chrome/common/file_system/webfilesystem_callback_dispatcher.cc +++ b/chrome/common/file_system/webfilesystem_callback_dispatcher.cc @@ -10,10 +10,10 @@ #include "base/file_util_proxy.h" #include "base/logging.h" #include "base/utf_string_conversions.h" -#include "third_party/WebKit/WebKit/chromium/public/WebFileInfo.h" -#include "third_party/WebKit/WebKit/chromium/public/WebFileSystem.h" -#include "third_party/WebKit/WebKit/chromium/public/WebFileSystemCallbacks.h" -#include "third_party/WebKit/WebKit/chromium/public/WebString.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebFileInfo.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebFileSystem.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebFileSystemCallbacks.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h" #include "webkit/glue/webkit_glue.h" using WebKit::WebFileInfo; diff --git a/chrome/common/file_system/webfilesystem_impl.cc b/chrome/common/file_system/webfilesystem_impl.cc index 5b180f6..9f5a0ea 100644 --- a/chrome/common/file_system/webfilesystem_impl.cc +++ b/chrome/common/file_system/webfilesystem_impl.cc @@ -8,9 +8,9 @@ #include "chrome/common/file_system/webfilesystem_callback_dispatcher.h" #include "chrome/common/file_system/webfilewriter_impl.h" #include "chrome/common/child_thread.h" -#include "third_party/WebKit/WebKit/chromium/public/WebFileInfo.h" -#include "third_party/WebKit/WebKit/chromium/public/WebFileSystemCallbacks.h" -#include "third_party/WebKit/WebKit/chromium/public/WebString.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebFileInfo.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebFileSystemCallbacks.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h" #include "webkit/glue/webkit_glue.h" using WebKit::WebFileInfo; diff --git a/chrome/common/file_system/webfilesystem_impl.h b/chrome/common/file_system/webfilesystem_impl.h index fc051e0..9aad3f5 100644 --- a/chrome/common/file_system/webfilesystem_impl.h +++ b/chrome/common/file_system/webfilesystem_impl.h @@ -6,7 +6,7 @@ #define CHROME_COMMON_FILE_SYSTEM_WEBFILESYSTEM_IMPL_H_ #include "base/basictypes.h" -#include "third_party/WebKit/WebKit/chromium/public/WebFileSystem.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebFileSystem.h" namespace WebKit { class WebFileWriter; diff --git a/chrome/common/gfx_resource_provider.cc b/chrome/common/gfx_resource_provider.cc new file mode 100644 index 0000000..8cee034 --- /dev/null +++ b/chrome/common/gfx_resource_provider.cc @@ -0,0 +1,16 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/common/gfx_resource_provider.h" + +#include "base/string_piece.h" +#include "ui/base/resource/resource_bundle.h" + +namespace chrome { + +base::StringPiece GfxResourceProvider(int key) { + return ResourceBundle::GetSharedInstance().GetRawDataResource(key); +} + +} // namespace chrome diff --git a/chrome/common/gfx_resource_provider.h b/chrome/common/gfx_resource_provider.h new file mode 100644 index 0000000..41b67b8 --- /dev/null +++ b/chrome/common/gfx_resource_provider.h @@ -0,0 +1,20 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_COMMON_GFX_RESOURCE_PROVIDER_H_ +#define CHROME_COMMON_GFX_RESOURCE_PROVIDER_H_ +#pragma once + +namespace base { +class StringPiece; +} + +namespace chrome { + +// This is called indirectly by the gfx theme code to access resources. +base::StringPiece GfxResourceProvider(int key); + +} // namespace chrome + +#endif // CHROME_COMMON_GFX_RESOURCE_PROVIDER_H_ diff --git a/chrome/common/gpu_info.cc b/chrome/common/gpu_info.cc index 744fdfc..ff9caae 100644 --- a/chrome/common/gpu_info.cc +++ b/chrome/common/gpu_info.cc @@ -1,22 +1,29 @@ -// Copyright (c) 2006-2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "chrome/common/gpu_info.h" GPUInfo::GPUInfo() - : progress_(kUninitialized), + : level_(kUninitialized), vendor_id_(0), device_id_(0), - driver_version_(L""), + driver_vendor_(""), + driver_version_(""), pixel_shader_version_(0), vertex_shader_version_(0), gl_version_(0), + gl_version_string_(""), + gl_vendor_(""), + gl_renderer_(""), + gl_extensions_(""), can_lose_context_(false) { } -GPUInfo::Progress GPUInfo::progress() const { - return progress_; +GPUInfo::~GPUInfo() {} + +GPUInfo::Level GPUInfo::level() const { + return level_; } base::TimeDelta GPUInfo::initialization_time() const { @@ -31,7 +38,11 @@ uint32 GPUInfo::device_id() const { return device_id_; } -std::wstring GPUInfo::driver_version() const { +std::string GPUInfo::driver_vendor() const { + return driver_vendor_; +} + +std::string GPUInfo::driver_version() const { return driver_version_; } @@ -47,34 +58,74 @@ uint32 GPUInfo::gl_version() const { return gl_version_; } +std::string GPUInfo::gl_version_string() const { + return gl_version_string_; +} + +std::string GPUInfo::gl_vendor() const { + return gl_vendor_; +} + +std::string GPUInfo::gl_renderer() const { + return gl_renderer_; +} + +std::string GPUInfo::gl_extensions() const { + return gl_extensions_; +} bool GPUInfo::can_lose_context() const { return can_lose_context_; } +void GPUInfo::SetLevel(Level level) { + level_ = level; +} + void GPUInfo::SetInitializationTime( const base::TimeDelta& initialization_time) { initialization_time_ = initialization_time; } - -void GPUInfo::SetGraphicsInfo(uint32 vendor_id, uint32 device_id, - const std::wstring& driver_version, - uint32 pixel_shader_version, - uint32 vertex_shader_version, - uint32 gl_version, - bool can_lose_context) { +void GPUInfo::SetVideoCardInfo(uint32 vendor_id, uint32 device_id) { vendor_id_ = vendor_id; device_id_ = device_id; +} + +void GPUInfo::SetDriverInfo(const std::string& driver_vendor, + const std::string& driver_version) { + driver_vendor_ = driver_vendor; driver_version_ = driver_version; +} + +void GPUInfo::SetShaderVersion(uint32 pixel_shader_version, + uint32 vertex_shader_version) { pixel_shader_version_ = pixel_shader_version; vertex_shader_version_ = vertex_shader_version; +} + +void GPUInfo::SetGLVersion(uint32 gl_version) { gl_version_ = gl_version; - can_lose_context_ = can_lose_context; } -void GPUInfo::SetProgress(Progress progress) { - progress_ = progress; +void GPUInfo::SetGLVersionString(const std::string& gl_version_string) { + gl_version_string_ = gl_version_string; +} + +void GPUInfo::SetGLVendor(const std::string& gl_vendor) { + gl_vendor_ = gl_vendor; +} + +void GPUInfo::SetGLRenderer(const std::string& gl_renderer) { + gl_renderer_ = gl_renderer; +} + +void GPUInfo::SetGLExtensions(const std::string& gl_extensions) { + gl_extensions_ = gl_extensions; +} + +void GPUInfo::SetCanLoseContext(bool can_lose_context) { + can_lose_context_ = can_lose_context; } #if defined(OS_WIN) diff --git a/chrome/common/gpu_info.h b/chrome/common/gpu_info.h index b8f7cc6..3b8e0e6 100644 --- a/chrome/common/gpu_info.h +++ b/chrome/common/gpu_info.h @@ -1,4 +1,4 @@ -// Copyright (c) 2006-2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -12,6 +12,7 @@ #include <string> #include "base/basictypes.h" +#include "base/scoped_ptr.h" #include "base/time.h" #include "build/build_config.h" #include "chrome/common/dx_diag_node.h" @@ -19,17 +20,18 @@ class GPUInfo { public: GPUInfo(); - ~GPUInfo() {} + ~GPUInfo(); - enum Progress { + enum Level { kUninitialized, kPartial, + kCompleting, kComplete, }; // Returns whether this GPUInfo has been partially or fully initialized with // information. - Progress progress() const; + Level level() const; // The amount of time taken to get from the process starting to the message // loop being pumped. @@ -42,42 +44,73 @@ class GPUInfo { // Device ids are unique to vendor, not to one another. uint32 device_id() const; + // Return the vendor of the graphics driver currently installed. + std::string driver_vendor() const; + // Return the version of the graphics driver currently installed. - // This will typically be something - std::wstring driver_version() const; + std::string driver_version() const; // Return the version of the pixel/fragment shader used by the gpu. - // This will typically be a number less than 10 so storing as a float - // should be okay. + // Major version in the second lowest 8 bits, minor in the lowest 8 bits, + // eg version 2.5 would be 0x00000205. uint32 pixel_shader_version() const; // Return the version of the vertex shader used by the gpu. - // This will typically be a number less than 10 so storing as a float - // should be okay. + // Major version in the second lowest 8 bits, minor in the lowest 8 bits, + // eg version 2.5 would be 0x00000205. uint32 vertex_shader_version() const; // Return the version of OpenGL we are using. - // Major version in the high word, minor in the low word, eg version 2.5 - // would be 0x00020005. + // Major version in the second lowest 8 bits, minor in the lowest 8 bits, + // eg version 2.5 would be 0x00000205. // Returns 0 if we're not using OpenGL, say because we're going through // D3D instead. + // TODO(zmo): should be able to tell if it's GL or GLES. uint32 gl_version() const; + // Return the GL_VERSION string. + // Return "" if we are not using OpenGL. + std::string gl_version_string() const; + + // Return the GL_VENDOR string. + // Return "" if we are not using OpenGL. + std::string gl_vendor() const; + + // Return the GL_RENDERER string. + // Return "" if we are not using OpenGL. + std::string gl_renderer() const; + + // Return the GL_EXTENSIONS string. + // Return "" if we are not using OpenGL. + std::string gl_extensions() const; + // Return the device semantics, i.e. whether the Vista and Windows 7 specific // semantics are available. bool can_lose_context() const; - void SetProgress(Progress progress); + void SetLevel(Level level); void SetInitializationTime(const base::TimeDelta& initialization_time); - // Populate variables with passed in values - void SetGraphicsInfo(uint32 vendor_id, uint32 device_id, - const std::wstring& driver_version, - uint32 pixel_shader_version, - uint32 vertex_shader_version, - uint32 gl_version, - bool can_lose_context); + void SetVideoCardInfo(uint32 vendor_id, uint32 device_id); + + void SetDriverInfo(const std::string& driver_vendor, + const std::string& driver_version); + + void SetShaderVersion(uint32 pixel_shader_version, + uint32 vertex_shader_version); + + void SetGLVersion(uint32 gl_version); + + void SetGLVersionString(const std::string& gl_vendor_string); + + void SetGLVendor(const std::string& gl_vendor); + + void SetGLRenderer(const std::string& gl_renderer); + + void SetGLExtensions(const std::string& gl_extensions); + + void SetCanLoseContext(bool can_lose_context); #if defined(OS_WIN) // The information returned by the DirectX Diagnostics Tool. @@ -87,14 +120,19 @@ class GPUInfo { #endif private: - Progress progress_; + Level level_; base::TimeDelta initialization_time_; uint32 vendor_id_; uint32 device_id_; - std::wstring driver_version_; + std::string driver_vendor_; + std::string driver_version_; uint32 pixel_shader_version_; uint32 vertex_shader_version_; uint32 gl_version_; + std::string gl_version_string_; + std::string gl_vendor_; + std::string gl_renderer_; + std::string gl_extensions_; bool can_lose_context_; #if defined(OS_WIN) diff --git a/chrome/common/gpu_info_unittest.cc b/chrome/common/gpu_info_unittest.cc index a209aa9..34630e8 100644 --- a/chrome/common/gpu_info_unittest.cc +++ b/chrome/common/gpu_info_unittest.cc @@ -8,9 +8,18 @@ // Test that an empty GPUInfo has valid members TEST(GPUInfoBasicTest, EmptyGPUInfo) { GPUInfo gpu_info; + EXPECT_EQ(gpu_info.level(), GPUInfo::kUninitialized); + EXPECT_EQ(gpu_info.initialization_time().ToInternalValue(), 0); EXPECT_EQ(gpu_info.vendor_id(), 0u); EXPECT_EQ(gpu_info.device_id(), 0u); - EXPECT_EQ(gpu_info.driver_version(), L""); + EXPECT_EQ(gpu_info.driver_vendor(), ""); + EXPECT_EQ(gpu_info.driver_version(), ""); EXPECT_EQ(gpu_info.pixel_shader_version(), 0u); EXPECT_EQ(gpu_info.vertex_shader_version(), 0u); + EXPECT_EQ(gpu_info.gl_version(), 0u); + EXPECT_EQ(gpu_info.gl_version_string(), ""); + EXPECT_EQ(gpu_info.gl_vendor(), ""); + EXPECT_EQ(gpu_info.gl_renderer(), ""); + EXPECT_EQ(gpu_info.gl_extensions(), ""); + EXPECT_EQ(gpu_info.can_lose_context(), false); } diff --git a/chrome/common/gpu_messages.cc b/chrome/common/gpu_messages.cc index 9d5c32e..b46babe 100644 --- a/chrome/common/gpu_messages.cc +++ b/chrome/common/gpu_messages.cc @@ -2,12 +2,14 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include "base/string_piece.h" +#include "base/sys_string_conversions.h" #include "chrome/common/gpu_create_command_buffer_config.h" #include "chrome/common/gpu_info.h" #include "chrome/common/dx_diag_node.h" -#include "gfx/rect.h" -#include "gfx/size.h" #include "ipc/ipc_channel_handle.h" +#include "ui/gfx/rect.h" +#include "ui/gfx/size.h" #define IPC_MESSAGE_IMPL #include "chrome/common/gpu_messages.h" @@ -126,14 +128,19 @@ void ParamTraits<GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params> ::Log( #endif // if defined(OS_MACOSX) void ParamTraits<GPUInfo> ::Write(Message* m, const param_type& p) { - WriteParam(m, static_cast<int32>(p.progress())); + WriteParam(m, static_cast<int32>(p.level())); WriteParam(m, p.initialization_time()); WriteParam(m, p.vendor_id()); WriteParam(m, p.device_id()); + WriteParam(m, p.driver_vendor()); WriteParam(m, p.driver_version()); WriteParam(m, p.pixel_shader_version()); WriteParam(m, p.vertex_shader_version()); WriteParam(m, p.gl_version()); + WriteParam(m, p.gl_version_string()); + WriteParam(m, p.gl_vendor()); + WriteParam(m, p.gl_renderer()); + WriteParam(m, p.gl_extensions()); WriteParam(m, p.can_lose_context()); #if defined(OS_WIN) @@ -142,36 +149,48 @@ void ParamTraits<GPUInfo> ::Write(Message* m, const param_type& p) { } bool ParamTraits<GPUInfo> ::Read(const Message* m, void** iter, param_type* p) { - int32 progress; + int32 level; base::TimeDelta initialization_time; uint32 vendor_id; uint32 device_id; - std::wstring driver_version; + std::string driver_vendor; + std::string driver_version; uint32 pixel_shader_version; uint32 vertex_shader_version; uint32 gl_version; + std::string gl_version_string; + std::string gl_vendor; + std::string gl_renderer; + std::string gl_extensions; bool can_lose_context; - bool ret = ReadParam(m, iter, &progress); + bool ret = ReadParam(m, iter, &level); ret = ret && ReadParam(m, iter, &initialization_time); ret = ret && ReadParam(m, iter, &vendor_id); ret = ret && ReadParam(m, iter, &device_id); + ret = ret && ReadParam(m, iter, &driver_vendor); ret = ret && ReadParam(m, iter, &driver_version); ret = ret && ReadParam(m, iter, &pixel_shader_version); ret = ret && ReadParam(m, iter, &vertex_shader_version); ret = ret && ReadParam(m, iter, &gl_version); + ret = ret && ReadParam(m, iter, &gl_version_string); + ret = ret && ReadParam(m, iter, &gl_vendor); + ret = ret && ReadParam(m, iter, &gl_renderer); + ret = ret && ReadParam(m, iter, &gl_extensions); ret = ret && ReadParam(m, iter, &can_lose_context); - p->SetProgress(static_cast<GPUInfo::Progress>(progress)); + p->SetLevel(static_cast<GPUInfo::Level>(level)); if (!ret) return false; p->SetInitializationTime(initialization_time); - p->SetGraphicsInfo(vendor_id, - device_id, - driver_version, - pixel_shader_version, - vertex_shader_version, - gl_version, - can_lose_context); + p->SetVideoCardInfo(vendor_id, device_id); + p->SetDriverInfo(driver_vendor, driver_version); + p->SetShaderVersion(pixel_shader_version, vertex_shader_version); + p->SetGLVersion(gl_version); + p->SetGLVersionString(gl_version_string); + p->SetGLVendor(gl_vendor); + p->SetGLRenderer(gl_renderer); + p->SetGLExtensions(gl_extensions); + p->SetCanLoseContext(can_lose_context); #if defined(OS_WIN) DxDiagNode dx_diagnostics; @@ -185,16 +204,38 @@ bool ParamTraits<GPUInfo> ::Read(const Message* m, void** iter, param_type* p) { } void ParamTraits<GPUInfo> ::Log(const param_type& p, std::string* l) { - l->append(base::StringPrintf("<GPUInfo> %d %d %x %x %ls %d", - p.progress(), + l->append(base::StringPrintf("<GPUInfo> %d %d %x %x %s %s %x %x %x %d", + p.level(), static_cast<int32>( p.initialization_time().InMilliseconds()), p.vendor_id(), p.device_id(), + p.driver_vendor().c_str(), p.driver_version().c_str(), + p.pixel_shader_version(), + p.vertex_shader_version(), + p.gl_version(), p.can_lose_context())); } + +void ParamTraits<GPUInfo::Level> ::Write(Message* m, const param_type& p) { + WriteParam(m, static_cast<int32>(p)); +} + +bool ParamTraits<GPUInfo::Level> ::Read(const Message* m, + void** iter, + param_type* p) { + int32 level; + bool ret = ReadParam(m, iter, &level); + *p = static_cast<GPUInfo::Level>(level); + return ret; +} + +void ParamTraits<GPUInfo::Level> ::Log(const param_type& p, std::string* l) { + LogParam(static_cast<int32>(p), l); +} + void ParamTraits<DxDiagNode> ::Write(Message* m, const param_type& p) { WriteParam(m, p.values); WriteParam(m, p.children); @@ -212,36 +253,6 @@ void ParamTraits<DxDiagNode> ::Log(const param_type& p, std::string* l) { l->append("<DxDiagNode>"); } -void ParamTraits<gpu::CommandBuffer::State> ::Write(Message* m, - const param_type& p) { - WriteParam(m, p.num_entries); - WriteParam(m, p.get_offset); - WriteParam(m, p.put_offset); - WriteParam(m, p.token); - WriteParam(m, static_cast<int32>(p.error)); -} - -bool ParamTraits<gpu::CommandBuffer::State> ::Read(const Message* m, - void** iter, - param_type* p) { - int32 temp; - if (ReadParam(m, iter, &p->num_entries) && - ReadParam(m, iter, &p->get_offset) && - ReadParam(m, iter, &p->put_offset) && - ReadParam(m, iter, &p->token) && - ReadParam(m, iter, &temp)) { - p->error = static_cast<gpu::error::Error>(temp); - return true; - } else { - return false; - } -} - -void ParamTraits<gpu::CommandBuffer::State> ::Log(const param_type& p, - std::string* l) { - l->append("<CommandBuffer::State>"); -} - void ParamTraits<GPUCreateCommandBufferConfig> ::Write( Message* m, const param_type& p) { WriteParam(m, p.allowed_extensions); diff --git a/chrome/common/gpu_messages.h b/chrome/common/gpu_messages.h index 387d2b1..2e89a25 100644 --- a/chrome/common/gpu_messages.h +++ b/chrome/common/gpu_messages.h @@ -10,8 +10,8 @@ #include "base/process.h" #include "chrome/common/common_param_traits.h" #include "chrome/common/gpu_param_traits.h" -#include "gfx/native_widget_types.h" #include "gpu/command_buffer/common/command_buffer.h" +#include "ui/gfx/native_widget_types.h" #include "chrome/common/gpu_messages_internal.h" diff --git a/chrome/common/gpu_messages_internal.h b/chrome/common/gpu_messages_internal.h index 22da39a..635362a 100644 --- a/chrome/common/gpu_messages_internal.h +++ b/chrome/common/gpu_messages_internal.h @@ -6,6 +6,7 @@ #include <string> #include "base/shared_memory.h" +#include "chrome/common/gpu_info.h" #include "chrome/common/gpu_video_common.h" #include "ipc/ipc_message_macros.h" @@ -53,9 +54,18 @@ IPC_MESSAGE_CONTROL1(GpuMsg_CloseChannel, // asynchronously.) Results in a GpuHostMsg_SynchronizeReply. IPC_MESSAGE_CONTROL0(GpuMsg_Synchronize) +// Tells the GPU process to create a new command buffer that renders directly +// to a native view. A corresponding GpuCommandBufferStub is created. +IPC_MESSAGE_CONTROL4(GpuMsg_CreateViewCommandBuffer, + gfx::PluginWindowHandle, /* view */ + int32, /* render_view_id */ + int32, /* renderer_id */ + GPUCreateCommandBufferConfig /* init_params */) + // Tells the GPU process to create a context for collecting graphics card // information. -IPC_MESSAGE_CONTROL0(GpuMsg_CollectGraphicsInfo) +IPC_MESSAGE_CONTROL1(GpuMsg_CollectGraphicsInfo, + GPUInfo::Level /* level */) #if defined(OS_MACOSX) // Tells the GPU process that the browser process handled the swap @@ -84,35 +94,61 @@ IPC_MESSAGE_CONTROL0(GpuMsg_Hang) //------------------------------------------------------------------------------ // GPU Host Messages -// These are messages from the GPU process to the browser. -// Response to a GpuHostMsg_EstablishChannel message. +// These are messages to the browser. + +// A renderer sends this when it wants to create a connection to the GPU +// process. The browser will create the GPU process if necessary, and will +// return a handle to the channel via a GpuChannelEstablished message. +IPC_MESSAGE_CONTROL0(GpuHostMsg_EstablishGpuChannel) + +// A renderer sends this to the browser process to provide a synchronization +// point for GPU operations, in particular to make sure the GPU channel has +// been established. +IPC_SYNC_MESSAGE_CONTROL0_0(GpuHostMsg_SynchronizeGpu) + +// A renderer sends this to the browser process when it wants to +// create a GL context associated with the given view_id. +IPC_SYNC_MESSAGE_CONTROL2_1(GpuHostMsg_CreateViewCommandBuffer, + int32, /* render_view_id */ + GPUCreateCommandBufferConfig, /* init_params */ + int32 /* route_id */) + +// Response from GPU to a GpuHostMsg_EstablishChannel message. IPC_MESSAGE_CONTROL2(GpuHostMsg_ChannelEstablished, IPC::ChannelHandle, /* channel_handle */ GPUInfo /* GPU logging stats */) -// Response to a GpuMsg_Synchronize message. -IPC_MESSAGE_CONTROL0(GpuHostMsg_SynchronizeReply) +// Respond from GPU to a GpuMsg_CreateViewCommandBuffer message. +IPC_MESSAGE_CONTROL1(GpuHostMsg_CommandBufferCreated, + int32 /* route_id */) -// Response to a GpuMsg_CollectGraphicsInfo. +// Request from GPU to free the browser resources associated with the +// command buffer. +IPC_MESSAGE_CONTROL3(GpuHostMsg_DestroyCommandBuffer, + gfx::PluginWindowHandle, /* view */ + int32, /* render_view_id */ + int32 /* renderer_id */) + +// Response from GPU to a GpuMsg_CollectGraphicsInfo. IPC_MESSAGE_CONTROL1(GpuHostMsg_GraphicsInfoCollected, GPUInfo /* GPU logging stats */) -#if defined(OS_LINUX) -// Get the XID for a view ID. -IPC_SYNC_MESSAGE_CONTROL1_1(GpuHostMsg_GetViewXID, - gfx::NativeViewId, /* view */ - unsigned long /* xid */) +// Message from GPU to add a GPU log message to the about:gpu page. +IPC_MESSAGE_CONTROL3(GpuHostMsg_OnLogMessage, + int /*severity*/, + std::string /* header */, + std::string /* message */) -// Release the lock on the window. -// If the associated view has been destroyed, destroy the window. -IPC_MESSAGE_CONTROL1(GpuHostMsg_ReleaseXID, - unsigned long /* xid */) +// Response from GPU to a GpuMsg_Synchronize message. +IPC_MESSAGE_CONTROL0(GpuHostMsg_SynchronizeReply) +#if defined(OS_LINUX) +// Resize the window that is being drawn into. It's important that this +// resize be synchronized with the swapping of the front and back buffers. IPC_SYNC_MESSAGE_CONTROL2_1(GpuHostMsg_ResizeXID, unsigned long, /* xid */ gfx::Size, /* size */ bool /* success */) - #elif defined(OS_MACOSX) // This message, used on Mac OS X 10.6 and later (where IOSurface is // supported), is sent from the GPU process to the browser to indicate that a @@ -128,12 +164,6 @@ IPC_MESSAGE_CONTROL1(GpuHostMsg_AcceleratedSurfaceSetIOSurface, IPC_MESSAGE_CONTROL1(GpuHostMsg_AcceleratedSurfaceBuffersSwapped, GpuHostMsg_AcceleratedSurfaceBuffersSwapped_Params) #elif defined(OS_WIN) -// Get the HWND for the compositor window and if necessary, create it -IPC_SYNC_MESSAGE_CONTROL2_1(GpuHostMsg_GetCompositorHostWindow, - int32, /* renderer_id */ - int32, /* render_view_id */ - gfx::PluginWindowHandle /* compositor_host_id */) - IPC_MESSAGE_CONTROL2(GpuHostMsg_ScheduleComposite, int32, /* renderer_id */ int32 /* render_view_id */) @@ -142,15 +172,6 @@ IPC_MESSAGE_CONTROL2(GpuHostMsg_ScheduleComposite, //------------------------------------------------------------------------------ // GPU Channel Messages // These are messages from a renderer process to the GPU process. -// Tells the GPU process to create a new command buffer that renders directly -// to a native view. The |render_view_id| is currently needed only on Mac OS -// X in order to identify the window on the browser side into which the -// rendering results go. A corresponding GpuCommandBufferStub is created. -IPC_SYNC_MESSAGE_CONTROL3_1(GpuChannelMsg_CreateViewCommandBuffer, - gfx::NativeViewId, /* view */ - int32, /* render_view_id */ - GPUCreateCommandBufferConfig, /* init_params */ - int32 /* route_id */) // Tells the GPU process to create a new command buffer that renders to an // offscreen frame buffer. If parent_route_id is not zero, the texture backing diff --git a/chrome/common/gpu_messages_unittest.cc b/chrome/common/gpu_messages_unittest.cc index 904d9da..4e2da79 100644 --- a/chrome/common/gpu_messages_unittest.cc +++ b/chrome/common/gpu_messages_unittest.cc @@ -12,14 +12,18 @@ // Test GPUInfo serialization TEST(GPUIPCMessageTest, GPUInfo) { GPUInfo input; - // Test variables taken from Lenovo T61 - input.SetProgress(GPUInfo::kPartial); + // Test variables taken from HP Z600 Workstation + input.SetLevel(GPUInfo::kPartial); input.SetInitializationTime(base::TimeDelta::FromMilliseconds(100)); - input.SetGraphicsInfo(0x10de, 0x429, L"6.14.11.7715", - 0xffff0300, - 0xfffe0300, - 0x00010005, - true); + input.SetVideoCardInfo(0x10de, 0x0658); + input.SetDriverInfo("NVIDIA", "195.36.24"); + input.SetShaderVersion(0x0162, 0x0162); + input.SetGLVersion(0x0302); + input.SetGLVersionString("3.2.0 NVIDIA 195.36.24"); + input.SetGLVendor("NVIDIA Corporation"); + input.SetGLRenderer("Quadro FX 380/PCI/SSE2"); + input.SetGLExtensions("GL_ARB_texture_rg GL_ARB_window_pos"); + input.SetCanLoseContext(false); IPC::Message msg(1, 2, IPC::Message::PRIORITY_NORMAL); IPC::WriteParam(&msg, input); @@ -27,18 +31,24 @@ TEST(GPUIPCMessageTest, GPUInfo) { GPUInfo output; void* iter = NULL; EXPECT_TRUE(IPC::ReadParam(&msg, &iter, &output)); - EXPECT_EQ(input.progress(), output.progress()); + EXPECT_EQ(input.level(), output.level()); EXPECT_EQ(input.initialization_time().InMilliseconds(), output.initialization_time().InMilliseconds()); EXPECT_EQ(input.vendor_id(), output.vendor_id()); EXPECT_EQ(input.device_id(), output.device_id()); + EXPECT_EQ(input.driver_vendor(), output.driver_vendor()); EXPECT_EQ(input.driver_version(), output.driver_version()); EXPECT_EQ(input.pixel_shader_version(), output.pixel_shader_version()); EXPECT_EQ(input.vertex_shader_version(), output.vertex_shader_version()); EXPECT_EQ(input.gl_version(), output.gl_version()); + EXPECT_EQ(input.gl_version_string(), output.gl_version_string()); + EXPECT_EQ(input.gl_vendor(), output.gl_vendor()); + EXPECT_EQ(input.gl_renderer(), output.gl_renderer()); + EXPECT_EQ(input.gl_extensions(), output.gl_extensions()); EXPECT_EQ(input.can_lose_context(), output.can_lose_context()); std::string log_message; IPC::LogParam(output, &log_message); - EXPECT_STREQ("<GPUInfo> 1 100 10de 429 6.14.11.7715 1", log_message.c_str()); + EXPECT_STREQ("<GPUInfo> 1 100 10de 658 NVIDIA 195.36.24 162 162 302 0", + log_message.c_str()); } diff --git a/chrome/common/gpu_param_traits.h b/chrome/common/gpu_param_traits.h index 3ebaca0..1c1c9c0 100644 --- a/chrome/common/gpu_param_traits.h +++ b/chrome/common/gpu_param_traits.h @@ -12,10 +12,11 @@ #include "chrome/common/dx_diag_node.h" #include "chrome/common/gpu_create_command_buffer_config.h" #include "chrome/common/gpu_info.h" -#include "gfx/native_widget_types.h" -#include "gfx/rect.h" -#include "gfx/size.h" +#include "gpu/ipc/gpu_command_buffer_traits.h" #include "gpu/command_buffer/common/command_buffer.h" +#include "ui/gfx/native_widget_types.h" +#include "ui/gfx/rect.h" +#include "ui/gfx/size.h" #if defined(OS_MACOSX) // Parameters for the GpuHostMsg_AcceleratedSurfaceSetIOSurface @@ -72,16 +73,16 @@ struct ParamTraits<GPUInfo> { }; template <> -struct ParamTraits<DxDiagNode> { - typedef DxDiagNode param_type; +struct ParamTraits<GPUInfo::Level> { + typedef GPUInfo::Level param_type; static void Write(Message* m, const param_type& p); static bool Read(const Message* m, void** iter, param_type* p); static void Log(const param_type& p, std::string* l); }; template <> -struct ParamTraits<gpu::CommandBuffer::State> { - typedef gpu::CommandBuffer::State param_type; +struct ParamTraits<DxDiagNode> { + typedef DxDiagNode param_type; static void Write(Message* m, const param_type& p); static bool Read(const Message* m, void** iter, param_type* p); static void Log(const param_type& p, std::string* l); diff --git a/chrome/common/gpu_plugin.cc b/chrome/common/gpu_plugin.cc index 4600638..fd4c680 100644 --- a/chrome/common/gpu_plugin.cc +++ b/chrome/common/gpu_plugin.cc @@ -15,28 +15,21 @@ namespace chrome { void RegisterInternalGPUPlugin() { #if defined(ENABLE_GPU) - static const std::wstring kWideMimeType = ASCIIToWide( - "application/vnd.google.chrome.gpu-plugin"); - static const webkit::npapi::PluginVersionInfo kGPUPluginInfo = { - FilePath(FILE_PATH_LITERAL("gpu-plugin")), - L"GPU Plug-in", - L"GPU Rendering Plug-in", - L"1", - kWideMimeType.c_str(), - L"", - L"", - { + const webkit::npapi::PluginEntryPoints entry_points = { #if !defined(OS_POSIX) || defined(OS_MACOSX) - gpu_plugin::NP_GetEntryPoints, + gpu_plugin::NP_GetEntryPoints, #endif - gpu_plugin::NP_Initialize, - gpu_plugin::NP_Shutdown - } + gpu_plugin::NP_Initialize, + gpu_plugin::NP_Shutdown }; if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableGPUPlugin)) webkit::npapi::PluginList::Singleton()->RegisterInternalPlugin( - kGPUPluginInfo); + FilePath(FILE_PATH_LITERAL("gpu-plugin")), + "GPU Plug-in", + "GPU Rendering Plug-in", + "application/vnd.google.chrome.gpu-plugin", + entry_points); #endif // ENABLE_GPU } diff --git a/chrome/common/hi_res_timer_manager.h b/chrome/common/hi_res_timer_manager.h new file mode 100644 index 0000000..25c02cd --- /dev/null +++ b/chrome/common/hi_res_timer_manager.h @@ -0,0 +1,30 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_COMMON_HI_RES_TIMER_MANAGER_H_ +#define CHROME_COMMON_HI_RES_TIMER_MANAGER_H_ +#pragma once + +#include "ui/base/system_monitor/system_monitor.h" + +// Ensures that the Windows high resolution timer is only used +// when not running on battery power. +class HighResolutionTimerManager : public ui::SystemMonitor::PowerObserver { + public: + HighResolutionTimerManager(); + virtual ~HighResolutionTimerManager(); + + // ui::SystemMonitor::PowerObserver: + virtual void OnPowerStateChange(bool on_battery_power); + + private: + // Enable or disable the faster multimedia timer. + void UseHiResClock(bool use); + + bool hi_res_clock_used_; + + DISALLOW_COPY_AND_ASSIGN(HighResolutionTimerManager); +}; + +#endif // CHROME_COMMON_HI_RES_TIMER_MANAGER_H_ diff --git a/chrome/common/hi_res_timer_manager_posix.cc b/chrome/common/hi_res_timer_manager_posix.cc new file mode 100644 index 0000000..fc9c1ba --- /dev/null +++ b/chrome/common/hi_res_timer_manager_posix.cc @@ -0,0 +1,20 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/common/hi_res_timer_manager.h" + +// On POSIX we don't need to do anything special with the system timer. + +HighResolutionTimerManager::HighResolutionTimerManager() + : hi_res_clock_used_(false) { +} + +HighResolutionTimerManager::~HighResolutionTimerManager() { +} + +void HighResolutionTimerManager::OnPowerStateChange(bool on_battery_power) { +} + +void HighResolutionTimerManager::UseHiResClock(bool use) { +} diff --git a/chrome/common/hi_res_timer_manager_win.cc b/chrome/common/hi_res_timer_manager_win.cc new file mode 100644 index 0000000..c165222 --- /dev/null +++ b/chrome/common/hi_res_timer_manager_win.cc @@ -0,0 +1,29 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/common/hi_res_timer_manager.h" + +#include "base/time.h" + +HighResolutionTimerManager::HighResolutionTimerManager() + : hi_res_clock_used_(false) { + ui::SystemMonitor* system_monitor = ui::SystemMonitor::Get(); + system_monitor->AddObserver(this); + UseHiResClock(!system_monitor->BatteryPower()); +} + +HighResolutionTimerManager::~HighResolutionTimerManager() { + ui::SystemMonitor::Get()->RemoveObserver(this); + UseHiResClock(false); +} + +void HighResolutionTimerManager::OnPowerStateChange(bool on_battery_power) { + UseHiResClock(!on_battery_power); +} + +void HighResolutionTimerManager::UseHiResClock(bool use) { + if (use == hi_res_clock_used_) + return; + base::Time::EnableHighResolutionTimer(use); +} diff --git a/chrome/common/indexed_db_key.cc b/chrome/common/indexed_db_key.cc index 0379c30..050b941 100644 --- a/chrome/common/indexed_db_key.cc +++ b/chrome/common/indexed_db_key.cc @@ -5,7 +5,7 @@ #include "chrome/common/indexed_db_key.h" #include "base/logging.h" -#include "third_party/WebKit/WebKit/chromium/public/WebString.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h" using WebKit::WebIDBKey; diff --git a/chrome/common/indexed_db_key.h b/chrome/common/indexed_db_key.h index b740c10..47f1872 100644 --- a/chrome/common/indexed_db_key.h +++ b/chrome/common/indexed_db_key.h @@ -8,7 +8,7 @@ #include "base/basictypes.h" #include "base/string16.h" -#include "third_party/WebKit/WebKit/chromium/public/WebIDBKey.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBKey.h" class IndexedDBKey { public: diff --git a/chrome/common/indexed_db_messages.cc b/chrome/common/indexed_db_messages.cc deleted file mode 100644 index c7c0e22..0000000 --- a/chrome/common/indexed_db_messages.cc +++ /dev/null @@ -1,339 +0,0 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/common/common_param_traits.h" - -#define IPC_MESSAGE_IMPL -#include "chrome/common/indexed_db_messages.h" - -IndexedDBHostMsg_FactoryOpen_Params::IndexedDBHostMsg_FactoryOpen_Params() - : routing_id(0), - response_id(0), - maximum_size(0) { -} - -IndexedDBHostMsg_FactoryOpen_Params::~IndexedDBHostMsg_FactoryOpen_Params() { -} - -IndexedDBHostMsg_DatabaseCreateObjectStore_Params:: - IndexedDBHostMsg_DatabaseCreateObjectStore_Params() - : auto_increment(false), - transaction_id(0), - idb_database_id(0) { -} - -IndexedDBHostMsg_DatabaseCreateObjectStore_Params:: - ~IndexedDBHostMsg_DatabaseCreateObjectStore_Params() { -} - -IndexedDBHostMsg_IndexOpenCursor_Params:: - IndexedDBHostMsg_IndexOpenCursor_Params() - : response_id(0), - lower_open(false), - upper_open(false), - direction(0), - idb_index_id(0), - transaction_id(0) { -} - -IndexedDBHostMsg_IndexOpenCursor_Params:: - ~IndexedDBHostMsg_IndexOpenCursor_Params() { -} - - -IndexedDBHostMsg_ObjectStorePut_Params:: - IndexedDBHostMsg_ObjectStorePut_Params() - : idb_object_store_id(0), - response_id(0), - add_only(false), - transaction_id(0) { -} - -IndexedDBHostMsg_ObjectStorePut_Params:: -~IndexedDBHostMsg_ObjectStorePut_Params() { -} - -IndexedDBHostMsg_ObjectStoreCreateIndex_Params:: - IndexedDBHostMsg_ObjectStoreCreateIndex_Params() - : unique(false), - transaction_id(0), - idb_object_store_id(0) { -} - -IndexedDBHostMsg_ObjectStoreCreateIndex_Params:: - ~IndexedDBHostMsg_ObjectStoreCreateIndex_Params() { -} - - -IndexedDBHostMsg_ObjectStoreOpenCursor_Params:: - IndexedDBHostMsg_ObjectStoreOpenCursor_Params() - : response_id(0), - lower_open(false), - upper_open(false), - direction(0), - idb_object_store_id(0), - transaction_id(0) { -} - -IndexedDBHostMsg_ObjectStoreOpenCursor_Params:: - ~IndexedDBHostMsg_ObjectStoreOpenCursor_Params() { -} - -namespace IPC { - -void ParamTraits<IndexedDBHostMsg_FactoryOpen_Params>::Write( - Message* m, - const param_type& p) { - WriteParam(m, p.routing_id); - WriteParam(m, p.response_id); - WriteParam(m, p.origin); - WriteParam(m, p.name); - WriteParam(m, p.maximum_size); -} - -bool ParamTraits<IndexedDBHostMsg_FactoryOpen_Params>::Read(const Message* m, - void** iter, - param_type* p) { - return - ReadParam(m, iter, &p->routing_id) && - ReadParam(m, iter, &p->response_id) && - ReadParam(m, iter, &p->origin) && - ReadParam(m, iter, &p->name) && - ReadParam(m, iter, &p->maximum_size); -} - -void ParamTraits<IndexedDBHostMsg_FactoryOpen_Params>::Log(const param_type& p, - std::string* l) { - l->append("("); - LogParam(p.routing_id, l); - l->append(", "); - LogParam(p.response_id, l); - l->append(", "); - LogParam(p.origin, l); - l->append(", "); - LogParam(p.name, l); - l->append(", "); - LogParam(p.maximum_size, l); - l->append(")"); -} - -void ParamTraits<IndexedDBHostMsg_DatabaseCreateObjectStore_Params>::Write( - Message* m, - const param_type& p) { - WriteParam(m, p.name); - WriteParam(m, p.key_path); - WriteParam(m, p.auto_increment); - WriteParam(m, p.transaction_id); - WriteParam(m, p.idb_database_id); -} - -bool ParamTraits<IndexedDBHostMsg_DatabaseCreateObjectStore_Params>::Read( - const Message* m, - void** iter, - param_type* p) { - return - ReadParam(m, iter, &p->name) && - ReadParam(m, iter, &p->key_path) && - ReadParam(m, iter, &p->auto_increment) && - ReadParam(m, iter, &p->transaction_id) && - ReadParam(m, iter, &p->idb_database_id); -} - -void ParamTraits<IndexedDBHostMsg_DatabaseCreateObjectStore_Params>::Log( - const param_type& p, - std::string* l) { - l->append("("); - LogParam(p.name, l); - l->append(", "); - LogParam(p.key_path, l); - l->append(", "); - LogParam(p.auto_increment, l); - l->append(", "); - LogParam(p.transaction_id, l); - l->append(", "); - LogParam(p.idb_database_id, l); - l->append(")"); -} - -void ParamTraits<IndexedDBHostMsg_IndexOpenCursor_Params>::Write( - Message* m, - const param_type& p) { - WriteParam(m, p.response_id); - WriteParam(m, p.lower_key); - WriteParam(m, p.upper_key); - WriteParam(m, p.lower_open); - WriteParam(m, p.upper_open); - WriteParam(m, p.direction); - WriteParam(m, p.idb_index_id); - WriteParam(m, p.transaction_id); -} - -bool ParamTraits<IndexedDBHostMsg_IndexOpenCursor_Params>::Read( - const Message* m, - void** iter, - param_type* p) { - return - ReadParam(m, iter, &p->response_id) && - ReadParam(m, iter, &p->lower_key) && - ReadParam(m, iter, &p->upper_key) && - ReadParam(m, iter, &p->lower_open) && - ReadParam(m, iter, &p->upper_open) && - ReadParam(m, iter, &p->direction) && - ReadParam(m, iter, &p->idb_index_id) && - ReadParam(m, iter, &p->transaction_id); -} - -void ParamTraits<IndexedDBHostMsg_IndexOpenCursor_Params>::Log( - const param_type& p, - std::string* l) { - l->append("("); - LogParam(p.response_id, l); - l->append(", "); - LogParam(p.lower_key, l); - l->append(", "); - LogParam(p.upper_key, l); - l->append(", "); - LogParam(p.lower_open, l); - l->append(", "); - LogParam(p.upper_open, l); - l->append(", "); - LogParam(p.direction, l); - l->append(", "); - LogParam(p.idb_index_id, l); - l->append(","); - LogParam(p.transaction_id, l); - l->append(")"); -} - -void ParamTraits<IndexedDBHostMsg_ObjectStorePut_Params>::Write( - Message* m, - const param_type& p) { - WriteParam(m, p.idb_object_store_id); - WriteParam(m, p.response_id); - WriteParam(m, p.serialized_value); - WriteParam(m, p.key); - WriteParam(m, p.add_only); - WriteParam(m, p.transaction_id); -} - -bool ParamTraits<IndexedDBHostMsg_ObjectStorePut_Params>::Read( - const Message* m, - void** iter, - param_type* p) { - return - ReadParam(m, iter, &p->idb_object_store_id) && - ReadParam(m, iter, &p->response_id) && - ReadParam(m, iter, &p->serialized_value) && - ReadParam(m, iter, &p->key) && - ReadParam(m, iter, &p->add_only) && - ReadParam(m, iter, &p->transaction_id); -} - -void ParamTraits<IndexedDBHostMsg_ObjectStorePut_Params>::Log( - const param_type& p, - std::string* l) { - l->append("("); - LogParam(p.idb_object_store_id, l); - l->append(", "); - LogParam(p.response_id, l); - l->append(", "); - LogParam(p.serialized_value, l); - l->append(", "); - LogParam(p.key, l); - l->append(", "); - LogParam(p.add_only, l); - l->append(", "); - LogParam(p.transaction_id, l); - l->append(")"); -} - -void ParamTraits<IndexedDBHostMsg_ObjectStoreCreateIndex_Params>::Write( - Message* m, - const param_type& p) { - WriteParam(m, p.name); - WriteParam(m, p.key_path); - WriteParam(m, p.unique); - WriteParam(m, p.transaction_id); - WriteParam(m, p.idb_object_store_id); -} - -bool ParamTraits<IndexedDBHostMsg_ObjectStoreCreateIndex_Params>::Read( - const Message* m, - void** iter, - param_type* p) { - return - ReadParam(m, iter, &p->name) && - ReadParam(m, iter, &p->key_path) && - ReadParam(m, iter, &p->unique) && - ReadParam(m, iter, &p->transaction_id) && - ReadParam(m, iter, &p->idb_object_store_id); -} - -void ParamTraits<IndexedDBHostMsg_ObjectStoreCreateIndex_Params>::Log( - const param_type& p, - std::string* l) { - l->append("("); - LogParam(p.name, l); - l->append(", "); - LogParam(p.key_path, l); - l->append(", "); - LogParam(p.unique, l); - l->append(", "); - LogParam(p.transaction_id, l); - l->append(", "); - LogParam(p.idb_object_store_id, l); - l->append(")"); -} - -void ParamTraits<IndexedDBHostMsg_ObjectStoreOpenCursor_Params>::Write( - Message* m, - const param_type& p) { - WriteParam(m, p.response_id); - WriteParam(m, p.lower_key); - WriteParam(m, p.upper_key); - WriteParam(m, p.lower_open); - WriteParam(m, p.upper_open); - WriteParam(m, p.direction); - WriteParam(m, p.idb_object_store_id); - WriteParam(m, p.transaction_id); -} - -bool ParamTraits<IndexedDBHostMsg_ObjectStoreOpenCursor_Params>::Read( - const Message* m, - void** iter, - param_type* p) { - return - ReadParam(m, iter, &p->response_id) && - ReadParam(m, iter, &p->lower_key) && - ReadParam(m, iter, &p->upper_key) && - ReadParam(m, iter, &p->lower_open) && - ReadParam(m, iter, &p->upper_open) && - ReadParam(m, iter, &p->direction) && - ReadParam(m, iter, &p->idb_object_store_id) && - ReadParam(m, iter, &p->transaction_id); -} - -void ParamTraits<IndexedDBHostMsg_ObjectStoreOpenCursor_Params>::Log( - const param_type& p, - std::string* l) { - l->append("("); - LogParam(p.response_id, l); - l->append(", "); - LogParam(p.lower_key, l); - l->append(", "); - LogParam(p.upper_key, l); - l->append(", "); - LogParam(p.lower_open, l); - l->append(", "); - LogParam(p.upper_open, l); - l->append(", "); - LogParam(p.direction, l); - l->append(", "); - LogParam(p.idb_object_store_id, l); - l->append(","); - LogParam(p.transaction_id, l); - l->append(")"); -} - -} // namespace IPC diff --git a/chrome/common/indexed_db_messages.h b/chrome/common/indexed_db_messages.h index 8eb77eb..4203f61 100644 --- a/chrome/common/indexed_db_messages.h +++ b/chrome/common/indexed_db_messages.h @@ -2,222 +2,125 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. -#ifndef CHROME_COMMON_INDEXED_DB_MESSAGES_H_ -#define CHROME_COMMON_INDEXED_DB_MESSAGES_H_ -#pragma once +// Message definition file, included multiple times, hence no include guard. + +#include <vector> #include "chrome/common/indexed_db_key.h" #include "chrome/common/indexed_db_param_traits.h" #include "chrome/common/serialized_script_value.h" #include "ipc/ipc_message_macros.h" #include "ipc/ipc_param_traits.h" -#include "third_party/WebKit/WebKit/chromium/public/WebExceptionCode.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebExceptionCode.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebIDBObjectStore.h" #define IPC_MESSAGE_START IndexedDBMsgStart -// Used to open an indexed database. -struct IndexedDBHostMsg_FactoryOpen_Params { - IndexedDBHostMsg_FactoryOpen_Params(); - ~IndexedDBHostMsg_FactoryOpen_Params(); +// Argument structures used in messages - // The routing ID of the view initiating the open. - int32 routing_id; +IPC_ENUM_TRAITS(WebKit::WebIDBObjectStore::PutMode) +// Used to open an indexed database. +IPC_STRUCT_BEGIN(IndexedDBHostMsg_FactoryOpen_Params) + // The routing ID of the view initiating the open. + IPC_STRUCT_MEMBER(int32, routing_id) // The response should have this id. - int32 response_id; - + IPC_STRUCT_MEMBER(int32, response_id) // The origin doing the initiating. - string16 origin; - + IPC_STRUCT_MEMBER(string16, origin) // The name of the database. - string16 name; - + IPC_STRUCT_MEMBER(string16, name) // The maximum size of the database. - uint64 maximum_size; -}; + IPC_STRUCT_MEMBER(uint64, maximum_size) +IPC_STRUCT_END() // Used to create an object store. -struct IndexedDBHostMsg_DatabaseCreateObjectStore_Params { - IndexedDBHostMsg_DatabaseCreateObjectStore_Params(); - ~IndexedDBHostMsg_DatabaseCreateObjectStore_Params(); - +IPC_STRUCT_BEGIN(IndexedDBHostMsg_DatabaseCreateObjectStore_Params) // The name of the object store. - string16 name; - + IPC_STRUCT_MEMBER(string16, name) // The keyPath of the object store. - NullableString16 key_path; - + IPC_STRUCT_MEMBER(NullableString16, key_path) // Whether the object store created should have a key generator. - bool auto_increment; - + IPC_STRUCT_MEMBER(bool, auto_increment) // The transaction this is associated with. - int32 transaction_id; - + IPC_STRUCT_MEMBER(int32, transaction_id) // The database the object store belongs to. - int32 idb_database_id; -}; + IPC_STRUCT_MEMBER(int32, idb_database_id) +IPC_STRUCT_END() // Used to open both cursors and object cursors in IndexedDB. -struct IndexedDBHostMsg_IndexOpenCursor_Params { - IndexedDBHostMsg_IndexOpenCursor_Params(); - ~IndexedDBHostMsg_IndexOpenCursor_Params(); - +IPC_STRUCT_BEGIN(IndexedDBHostMsg_IndexOpenCursor_Params) // The response should have this id. - int32 response_id; - + IPC_STRUCT_MEMBER(int32, response_id) // The serialized lower key. - IndexedDBKey lower_key; - + IPC_STRUCT_MEMBER(IndexedDBKey, lower_key) // The serialized upper key. - IndexedDBKey upper_key; - + IPC_STRUCT_MEMBER(IndexedDBKey, upper_key) // Is the lower bound open? - bool lower_open; - + IPC_STRUCT_MEMBER(bool, lower_open) // Is the upper bound open? - bool upper_open; - + IPC_STRUCT_MEMBER(bool, upper_open) // The direction of this cursor. - int32 direction; - + IPC_STRUCT_MEMBER(int32, direction) // The index the index belongs to. - int32 idb_index_id; - + IPC_STRUCT_MEMBER(int32, idb_index_id) // The transaction this request belongs to. - int transaction_id; -}; + IPC_STRUCT_MEMBER(int, transaction_id) +IPC_STRUCT_END() // Used to set a value in an object store. -struct IndexedDBHostMsg_ObjectStorePut_Params { - IndexedDBHostMsg_ObjectStorePut_Params(); - ~IndexedDBHostMsg_ObjectStorePut_Params(); - +IPC_STRUCT_BEGIN(IndexedDBHostMsg_ObjectStorePut_Params) // The object store's id. - int32 idb_object_store_id; - + IPC_STRUCT_MEMBER(int32, idb_object_store_id) // The id any response should contain. - int32 response_id; - + IPC_STRUCT_MEMBER(int32, response_id) // The value to set. - SerializedScriptValue serialized_value; - + IPC_STRUCT_MEMBER(SerializedScriptValue, serialized_value) // The key to set it on (may not be "valid"/set in some cases). - IndexedDBKey key; - - // If it already exists, don't update (just return an error). - bool add_only; - + IPC_STRUCT_MEMBER(IndexedDBKey, key) + // Whether this is an add or a put. + IPC_STRUCT_MEMBER(WebKit::WebIDBObjectStore::PutMode, put_mode) // The transaction it's associated with. - int transaction_id; -}; + IPC_STRUCT_MEMBER(int, transaction_id) +IPC_STRUCT_END() // Used to create an index. -struct IndexedDBHostMsg_ObjectStoreCreateIndex_Params { - IndexedDBHostMsg_ObjectStoreCreateIndex_Params(); - ~IndexedDBHostMsg_ObjectStoreCreateIndex_Params(); - +IPC_STRUCT_BEGIN(IndexedDBHostMsg_ObjectStoreCreateIndex_Params) // The name of the index. - string16 name; - + IPC_STRUCT_MEMBER(string16, name) // The keyPath of the index. - NullableString16 key_path; - + IPC_STRUCT_MEMBER(NullableString16, key_path) // Whether the index created has unique keys. - bool unique; - + IPC_STRUCT_MEMBER(bool, unique) // The transaction this is associated with. - int32 transaction_id; - + IPC_STRUCT_MEMBER(int32, transaction_id) // The object store the index belongs to. - int32 idb_object_store_id; -}; + IPC_STRUCT_MEMBER(int32, idb_object_store_id) +IPC_STRUCT_END() // Used to open an IndexedDB cursor. -struct IndexedDBHostMsg_ObjectStoreOpenCursor_Params { - IndexedDBHostMsg_ObjectStoreOpenCursor_Params(); - ~IndexedDBHostMsg_ObjectStoreOpenCursor_Params(); - +IPC_STRUCT_BEGIN(IndexedDBHostMsg_ObjectStoreOpenCursor_Params) // The response should have this id. - int32 response_id; - + IPC_STRUCT_MEMBER(int32, response_id) // The serialized lower key. - IndexedDBKey lower_key; - + IPC_STRUCT_MEMBER(IndexedDBKey, lower_key) // The serialized upper key. - IndexedDBKey upper_key; - + IPC_STRUCT_MEMBER(IndexedDBKey, upper_key) // Is the lower bound open? - bool lower_open; - + IPC_STRUCT_MEMBER(bool, lower_open) // Is the upper bound open? - bool upper_open; - + IPC_STRUCT_MEMBER(bool, upper_open) // The direction of this cursor. - int32 direction; - + IPC_STRUCT_MEMBER(int32, direction) // The object store the cursor belongs to. - int32 idb_object_store_id; - + IPC_STRUCT_MEMBER(int32, idb_object_store_id) // The transaction this request belongs to. - int transaction_id; -}; - -namespace IPC { -template <> -struct ParamTraits<IndexedDBHostMsg_FactoryOpen_Params> { - typedef IndexedDBHostMsg_FactoryOpen_Params param_type; - static void Write(Message* m, const param_type& p); - static bool Read(const Message* m, void** iter, param_type* p); - static void Log(const param_type& p, std::string* l); -}; - -template <> -struct ParamTraits<IndexedDBHostMsg_DatabaseCreateObjectStore_Params> { - typedef IndexedDBHostMsg_DatabaseCreateObjectStore_Params param_type; - static void Write(Message* m, const param_type& p); - static bool Read(const Message* m, void** iter, param_type* p); - static void Log(const param_type& p, std::string* l); -}; - -template <> -struct ParamTraits<IndexedDBHostMsg_IndexOpenCursor_Params> { - typedef IndexedDBHostMsg_IndexOpenCursor_Params param_type; - static void Write(Message* m, const param_type& p); - static bool Read(const Message* m, void** iter, param_type* p); - static void Log(const param_type& p, std::string* l); -}; - -template <> -struct ParamTraits<IndexedDBHostMsg_ObjectStorePut_Params> { - typedef IndexedDBHostMsg_ObjectStorePut_Params param_type; - static void Write(Message* m, const param_type& p); - static bool Read(const Message* m, void** iter, param_type* p); - static void Log(const param_type& p, std::string* l); -}; - -template <> -struct ParamTraits<IndexedDBHostMsg_ObjectStoreCreateIndex_Params> { - typedef IndexedDBHostMsg_ObjectStoreCreateIndex_Params param_type; - static void Write(Message* m, const param_type& p); - static bool Read(const Message* m, void** iter, param_type* p); - static void Log(const param_type& p, std::string* l); -}; - -template <> -struct ParamTraits<IndexedDBHostMsg_ObjectStoreOpenCursor_Params> { - typedef IndexedDBHostMsg_ObjectStoreOpenCursor_Params param_type; - static void Write(Message* m, const param_type& p); - static bool Read(const Message* m, void** iter, param_type* p); - static void Log(const param_type& p, std::string* l); -}; - -} // namespace IPC + IPC_STRUCT_MEMBER(int, transaction_id) +IPC_STRUCT_END() // Indexed DB messages sent from the browser to the renderer. // IDBCallback message handlers. -IPC_MESSAGE_CONTROL1(IndexedDBMsg_CallbacksSuccessNull, - int32 /* response_id */) IPC_MESSAGE_CONTROL2(IndexedDBMsg_CallbacksSuccessIDBCursor, int32 /* response_id */, int32 /* cursor_id */) @@ -243,6 +146,8 @@ IPC_MESSAGE_CONTROL3(IndexedDBMsg_CallbacksError, int32 /* response_id */, int /* code */, string16 /* message */) +IPC_MESSAGE_CONTROL1(IndexedDBMsg_CallbacksBlocked, + int32 /* response_id */) // IDBTransactionCallback message handlers. IPC_MESSAGE_CONTROL1(IndexedDBMsg_TransactionCallbacksAbort, @@ -343,6 +248,14 @@ IPC_SYNC_MESSAGE_CONTROL4_2(IndexedDBHostMsg_DatabaseTransaction, int32, /* idb_transaction_id */ WebKit::WebExceptionCode /* ec */) +// WebIDBDatabase::close() message. +IPC_MESSAGE_CONTROL1(IndexedDBHostMsg_DatabaseOpen, + int32 /* idb_database_id */) + +// WebIDBDatabase::close() message. +IPC_MESSAGE_CONTROL1(IndexedDBHostMsg_DatabaseClose, + int32 /* idb_database_id */) + // WebIDBDatabase::~WebIDBDatabase() message. IPC_MESSAGE_CONTROL1(IndexedDBHostMsg_DatabaseDestroyed, int32 /* idb_database_id */) @@ -433,6 +346,13 @@ IPC_SYNC_MESSAGE_CONTROL4_1(IndexedDBHostMsg_ObjectStoreDelete, int32, /* transaction_id */ WebKit::WebExceptionCode /* ec */) +// WebIDBObjectStore::clear() message. +IPC_SYNC_MESSAGE_CONTROL3_1(IndexedDBHostMsg_ObjectStoreClear, + int32, /* idb_object_store_id */ + int32, /* response_id */ + int32, /* transaction_id */ + WebKit::WebExceptionCode /* ec */) + // WebIDBObjectStore::createIndex() message. IPC_SYNC_MESSAGE_CONTROL1_2(IndexedDBHostMsg_ObjectStoreCreateIndex, IndexedDBHostMsg_ObjectStoreCreateIndex_Params, @@ -490,4 +410,3 @@ IPC_MESSAGE_CONTROL1(IndexedDBHostMsg_TransactionDidCompleteTaskEvents, IPC_MESSAGE_CONTROL1(IndexedDBHostMsg_TransactionDestroyed, int32 /* idb_transaction_id */) -#endif // CHROME_COMMON_INDEXED_DB_MESSAGES_H_ diff --git a/chrome/common/ipc_test_sink.cc b/chrome/common/ipc_test_sink.cc deleted file mode 100644 index 69d328c..0000000 --- a/chrome/common/ipc_test_sink.cc +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/common/ipc_test_sink.h" -#include "ipc/ipc_message.h" - -namespace IPC { - -TestSink::TestSink() { -} - -TestSink::~TestSink() { -} - -bool TestSink::Send(IPC::Message* message) { - OnMessageReceived(*message); - delete message; - return true; -} - -bool TestSink::OnMessageReceived(const Message& msg) { - messages_.push_back(Message(msg)); - return true; -} - -void TestSink::ClearMessages() { - messages_.clear(); -} - -const Message* TestSink::GetMessageAt(size_t index) const { - if (index >= messages_.size()) - return NULL; - return &messages_[index]; -} - -const Message* TestSink::GetFirstMessageMatching(uint32 id) const { - for (size_t i = 0; i < messages_.size(); i++) { - if (messages_[i].type() == id) - return &messages_[i]; - } - return NULL; -} - -const Message* TestSink::GetUniqueMessageMatching(uint32 id) const { - size_t found_index = 0; - size_t found_count = 0; - for (size_t i = 0; i < messages_.size(); i++) { - if (messages_[i].type() == id) { - found_count++; - found_index = i; - } - } - if (found_count != 1) - return NULL; // Didn't find a unique one. - return &messages_[found_index]; -} - -} // namespace IPC diff --git a/chrome/common/ipc_test_sink.h b/chrome/common/ipc_test_sink.h deleted file mode 100644 index 05720d4..0000000 --- a/chrome/common/ipc_test_sink.h +++ /dev/null @@ -1,91 +0,0 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_COMMON_IPC_TEST_SINK_H_ -#define CHROME_COMMON_IPC_TEST_SINK_H_ -#pragma once - -#include <utility> -#include <vector> - -#include "base/basictypes.h" -#include "ipc/ipc_channel.h" - -namespace IPC { - -class Message; - -// This test sink provides a "sink" for IPC messages that are sent. It allows -// the caller to query messages received in various different ways. It is -// designed for tests for objects that use the IPC system. -// -// Typical usage: -// -// test_sink.ClearMessages(); -// do_something(); -// -// // We should have gotten exactly one update state message. -// EXPECT_TRUE(test_sink.GetUniqeMessageMatching(ViewHostMsg_Update::ID)); -// // ...and no start load messages. -// EXPECT_FALSE(test_sink.GetFirstMessageMatching(ViewHostMsg_Start::ID)); -// -// // Now inspect a message. This assumes a message that was declared like -// // this: IPC_MESSAGE_ROUTED2(ViewMsg_Foo, bool, int) -// IPC::Message* msg = test_sink.GetFirstMessageMatching(ViewMsg_Foo::ID)); -// ASSERT_TRUE(msg); -// bool first_param; -// int second_param; -// ViewMsg_Foo::Read(msg, &first_param, &second_param); -// -// // Go on to the next phase of the test. -// test_sink.ClearMessages(); -// -// To hook up the sink, all you need to do is call OnMessageReceived when a -// message is received. -class TestSink : public IPC::Channel { - public: - TestSink(); - ~TestSink(); - - // Interface in IPC::Channel. This copies the message to the sink and then - // deletes it. - virtual bool Send(IPC::Message* message); - - // Used by the source of the messages to send the message to the sink. This - // will make a copy of the message and store it in the list. - bool OnMessageReceived(const Message& msg); - - // Returns the number of messages in the queue. - size_t message_count() const { return messages_.size(); } - - // Clears the message queue of saved messages. - void ClearMessages(); - - // Returns the message at the given index in the queue. The index may be out - // of range, in which case the return value is NULL. The returned pointer will - // only be valid until another message is received or the list is cleared. - const Message* GetMessageAt(size_t index) const; - - // Returns the first message with the given ID in the queue. If there is no - // message with the given ID, returns NULL. The returned pointer will only be - // valid until another message is received or the list is cleared. - const Message* GetFirstMessageMatching(uint32 id) const; - - // Returns the message with the given ID in the queue. If there is no such - // message or there is more than one of that message, this will return NULL - // (with the expectation that you'll do an ASSERT_TRUE() on the result). - // The returned pointer will only be valid until another message is received - // or the list is cleared. - const Message* GetUniqueMessageMatching(uint32 id) const; - - private: - // The actual list of received messages. - std::vector<Message> messages_; - - DISALLOW_COPY_AND_ASSIGN(TestSink); -}; - -} // namespace IPC - -#endif // CHROME_COMMON_IPC_TEST_SINK_H_ diff --git a/chrome/common/json_pref_store.cc b/chrome/common/json_pref_store.cc index f5ff728..63e11d9 100644 --- a/chrome/common/json_pref_store.cc +++ b/chrome/common/json_pref_store.cc @@ -84,13 +84,6 @@ PersistentPrefStore::PrefReadError JsonPrefStore::ReadPrefs() { std::string error_msg; scoped_ptr<Value> value(serializer.Deserialize(&error_code, &error_msg)); if (!value.get()) { -#if defined(GOOGLE_CHROME_BUILD) - // This log could be used for more detailed client-side error diagnosis, - // but since this triggers often with unit tests, we need to disable it - // in non-official builds. - PLOG(ERROR) << "Error reading Preferences: " << error_msg << " " << - path_.value(); -#endif PrefReadError error; switch (error_code) { case JSONFileValueSerializer::JSON_ACCESS_DENIED: diff --git a/chrome/common/json_pref_store_unittest.cc b/chrome/common/json_pref_store_unittest.cc index 2d1e1df..1b98aa9 100644 --- a/chrome/common/json_pref_store_unittest.cc +++ b/chrome/common/json_pref_store_unittest.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -6,6 +6,7 @@ #include "base/message_loop.h" #include "base/message_loop_proxy.h" #include "base/path_service.h" +#include "base/ref_counted.h" #include "base/scoped_ptr.h" #include "base/string_number_conversions.h" #include "base/string_util.h" @@ -53,10 +54,11 @@ class JsonPrefStoreTest : public testing::Test { TEST_F(JsonPrefStoreTest, NonExistentFile) { FilePath bogus_input_file = data_dir_.AppendASCII("read.txt"); ASSERT_FALSE(file_util::PathExists(bogus_input_file)); - JsonPrefStore pref_store(bogus_input_file, message_loop_proxy_.get()); + scoped_refptr<JsonPrefStore> pref_store = + new JsonPrefStore(bogus_input_file, message_loop_proxy_.get()); EXPECT_EQ(PersistentPrefStore::PREF_READ_ERROR_NO_FILE, - pref_store.ReadPrefs()); - EXPECT_FALSE(pref_store.ReadOnly()); + pref_store->ReadPrefs()); + EXPECT_FALSE(pref_store->ReadOnly()); } // Test fallback behavior for an invalid file. @@ -64,10 +66,11 @@ TEST_F(JsonPrefStoreTest, InvalidFile) { FilePath invalid_file_original = data_dir_.AppendASCII("invalid.json"); FilePath invalid_file = test_dir_.AppendASCII("invalid.json"); ASSERT_TRUE(file_util::CopyFile(invalid_file_original, invalid_file)); - JsonPrefStore pref_store(invalid_file, message_loop_proxy_.get()); + scoped_refptr<JsonPrefStore> pref_store = + new JsonPrefStore(invalid_file, message_loop_proxy_.get()); EXPECT_EQ(PersistentPrefStore::PREF_READ_ERROR_JSON_PARSE, - pref_store.ReadPrefs()); - EXPECT_FALSE(pref_store.ReadOnly()); + pref_store->ReadPrefs()); + EXPECT_FALSE(pref_store->ReadOnly()); // The file should have been moved aside. EXPECT_FALSE(file_util::PathExists(invalid_file)); @@ -84,9 +87,10 @@ TEST_F(JsonPrefStoreTest, Basic) { // Test that the persistent value can be loaded. FilePath input_file = test_dir_.AppendASCII("write.json"); ASSERT_TRUE(file_util::PathExists(input_file)); - JsonPrefStore pref_store(input_file, message_loop_proxy_.get()); - ASSERT_EQ(PersistentPrefStore::PREF_READ_ERROR_NONE, pref_store.ReadPrefs()); - ASSERT_FALSE(pref_store.ReadOnly()); + scoped_refptr<JsonPrefStore> pref_store = + new JsonPrefStore(input_file, message_loop_proxy_.get()); + ASSERT_EQ(PersistentPrefStore::PREF_READ_ERROR_NONE, pref_store->ReadPrefs()); + ASSERT_FALSE(pref_store->ReadOnly()); // The JSON file looks like this: // { @@ -106,52 +110,52 @@ TEST_F(JsonPrefStoreTest, Basic) { Value* actual; EXPECT_EQ(PrefStore::READ_OK, - pref_store.GetValue(prefs::kHomePage, &actual)); + pref_store->GetValue(prefs::kHomePage, &actual)); std::string string_value; EXPECT_TRUE(actual->GetAsString(&string_value)); EXPECT_EQ(cnn, string_value); const char kSomeDirectory[] = "some_directory"; - EXPECT_EQ(PrefStore::READ_OK, pref_store.GetValue(kSomeDirectory, &actual)); + EXPECT_EQ(PrefStore::READ_OK, pref_store->GetValue(kSomeDirectory, &actual)); FilePath::StringType path; EXPECT_TRUE(actual->GetAsString(&path)); EXPECT_EQ(FilePath::StringType(FILE_PATH_LITERAL("/usr/local/")), path); FilePath some_path(FILE_PATH_LITERAL("/usr/sbin/")); - pref_store.SetValue(kSomeDirectory, - Value::CreateStringValue(some_path.value())); - EXPECT_EQ(PrefStore::READ_OK, pref_store.GetValue(kSomeDirectory, &actual)); + pref_store->SetValue(kSomeDirectory, + Value::CreateStringValue(some_path.value())); + EXPECT_EQ(PrefStore::READ_OK, pref_store->GetValue(kSomeDirectory, &actual)); EXPECT_TRUE(actual->GetAsString(&path)); EXPECT_EQ(some_path.value(), path); // Test reading some other data types from sub-dictionaries. EXPECT_EQ(PrefStore::READ_OK, - pref_store.GetValue(kNewWindowsInTabs, &actual)); + pref_store->GetValue(kNewWindowsInTabs, &actual)); bool boolean = false; EXPECT_TRUE(actual->GetAsBoolean(&boolean)); EXPECT_TRUE(boolean); - pref_store.SetValue(kNewWindowsInTabs, + pref_store->SetValue(kNewWindowsInTabs, Value::CreateBooleanValue(false)); EXPECT_EQ(PrefStore::READ_OK, - pref_store.GetValue(kNewWindowsInTabs, &actual)); + pref_store->GetValue(kNewWindowsInTabs, &actual)); EXPECT_TRUE(actual->GetAsBoolean(&boolean)); EXPECT_FALSE(boolean); - EXPECT_EQ(PrefStore::READ_OK, pref_store.GetValue(kMaxTabs, &actual)); + EXPECT_EQ(PrefStore::READ_OK, pref_store->GetValue(kMaxTabs, &actual)); int integer = 0; EXPECT_TRUE(actual->GetAsInteger(&integer)); EXPECT_EQ(20, integer); - pref_store.SetValue(kMaxTabs, Value::CreateIntegerValue(10)); - EXPECT_EQ(PrefStore::READ_OK, pref_store.GetValue(kMaxTabs, &actual)); + pref_store->SetValue(kMaxTabs, Value::CreateIntegerValue(10)); + EXPECT_EQ(PrefStore::READ_OK, pref_store->GetValue(kMaxTabs, &actual)); EXPECT_TRUE(actual->GetAsInteger(&integer)); EXPECT_EQ(10, integer); - pref_store.SetValue(kLongIntPref, + pref_store->SetValue(kLongIntPref, Value::CreateStringValue( base::Int64ToString(214748364842LL))); - EXPECT_EQ(PrefStore::READ_OK, pref_store.GetValue(kLongIntPref, &actual)); + EXPECT_EQ(PrefStore::READ_OK, pref_store->GetValue(kLongIntPref, &actual)); EXPECT_TRUE(actual->GetAsString(&string_value)); int64 value; base::StringToInt64(string_value, &value); @@ -161,7 +165,7 @@ TEST_F(JsonPrefStoreTest, Basic) { FilePath output_file = input_file; FilePath golden_output_file = data_dir_.AppendASCII("write.golden.json"); ASSERT_TRUE(file_util::PathExists(golden_output_file)); - ASSERT_TRUE(pref_store.WritePrefs()); + ASSERT_TRUE(pref_store->WritePrefs()); MessageLoop::current()->RunAllPending(); EXPECT_TRUE(file_util::TextContentsEqual(golden_output_file, output_file)); ASSERT_TRUE(file_util::Delete(output_file, false)); diff --git a/chrome/common/json_schema_validator.cc b/chrome/common/json_schema_validator.cc index a76b2d9..7da218f 100644 --- a/chrome/common/json_schema_validator.cc +++ b/chrome/common/json_schema_validator.cc @@ -7,16 +7,16 @@ #include <cfloat> #include <cmath> -#include "app/l10n_util.h" #include "base/string_number_conversions.h" #include "base/string_util.h" #include "base/values.h" +#include "ui/base/l10n/l10n_util.h" namespace { double GetNumberValue(Value* value) { double result = 0; - if (value->GetAsReal(&result)) + if (value->GetAsDouble(&result)) return result; int int_result = 0; @@ -30,7 +30,7 @@ double GetNumberValue(Value* value) { bool GetNumberFromDictionary(DictionaryValue* value, const std::string& key, double* number) { - if (value->GetReal(key, number)) + if (value->GetDouble(key, number)) return true; int int_value = 0; @@ -97,9 +97,9 @@ std::string JSONSchemaValidator::GetJSONSchemaType(Value* value) { return "boolean"; case Value::TYPE_INTEGER: return "integer"; - case Value::TYPE_REAL: { + case Value::TYPE_DOUBLE: { double double_value = 0; - value->GetAsReal(&double_value); + value->GetAsDouble(&double_value); if (std::abs(double_value) <= std::pow(2.0, DBL_MANT_DIG) && double_value == floor(double_value)) { return "integer"; @@ -269,9 +269,9 @@ void JSONSchemaValidator::ValidateEnum(Value* instance, break; case Value::TYPE_INTEGER: - case Value::TYPE_REAL: + case Value::TYPE_DOUBLE: if (instance->IsType(Value::TYPE_INTEGER) || - instance->IsType(Value::TYPE_REAL)) { + instance->IsType(Value::TYPE_DOUBLE)) { if (GetNumberValue(choice) == GetNumberValue(instance)) return; } diff --git a/chrome/common/json_schema_validator_unittest_base.cc b/chrome/common/json_schema_validator_unittest_base.cc index 782d6bc..6d2c1bb 100644 --- a/chrome/common/json_schema_validator_unittest_base.cc +++ b/chrome/common/json_schema_validator_unittest_base.cc @@ -441,18 +441,18 @@ void JSONSchemaValidatorTestBase::TestNumber() { scoped_ptr<Value>(Value::CreateIntegerValue(100)).get(), schema.get(), NULL); ExpectValid(TEST_SOURCE, - scoped_ptr<Value>(Value::CreateRealValue(88.88)).get(), + scoped_ptr<Value>(Value::CreateDoubleValue(88.88)).get(), schema.get(), NULL); ExpectNotValid( TEST_SOURCE, - scoped_ptr<Value>(Value::CreateRealValue(0.5)).get(), + scoped_ptr<Value>(Value::CreateDoubleValue(0.5)).get(), schema.get(), NULL, "", JSONSchemaValidator::FormatErrorMessage( JSONSchemaValidator::kNumberMinimum, "1")); ExpectNotValid( TEST_SOURCE, - scoped_ptr<Value>(Value::CreateRealValue(100.1)).get(), + scoped_ptr<Value>(Value::CreateDoubleValue(100.1)).get(), schema.get(), NULL, "", JSONSchemaValidator::FormatErrorMessage( JSONSchemaValidator::kNumberMaximum, "100")); @@ -472,23 +472,23 @@ void JSONSchemaValidatorTestBase::TestTypeClassifier() { EXPECT_EQ("integer", JSONSchemaValidator::GetJSONSchemaType( scoped_ptr<Value>(Value::CreateIntegerValue(0)).get())); EXPECT_EQ("integer", JSONSchemaValidator::GetJSONSchemaType( - scoped_ptr<Value>(Value::CreateRealValue(42)).get())); + scoped_ptr<Value>(Value::CreateDoubleValue(42)).get())); EXPECT_EQ("integer", JSONSchemaValidator::GetJSONSchemaType( scoped_ptr<Value>( - Value::CreateRealValue(pow(2.0, DBL_MANT_DIG))).get())); + Value::CreateDoubleValue(pow(2.0, DBL_MANT_DIG))).get())); EXPECT_EQ("integer", JSONSchemaValidator::GetJSONSchemaType( scoped_ptr<Value>( - Value::CreateRealValue(pow(-2.0, DBL_MANT_DIG))).get())); + Value::CreateDoubleValue(pow(-2.0, DBL_MANT_DIG))).get())); // "number" is only used for non-integral numbers, or numbers beyond what // double can accurately represent. EXPECT_EQ("number", JSONSchemaValidator::GetJSONSchemaType( - scoped_ptr<Value>(Value::CreateRealValue(88.8)).get())); + scoped_ptr<Value>(Value::CreateDoubleValue(88.8)).get())); EXPECT_EQ("number", JSONSchemaValidator::GetJSONSchemaType( - scoped_ptr<Value>(Value::CreateRealValue( + scoped_ptr<Value>(Value::CreateDoubleValue( pow(2.0, DBL_MANT_DIG) * 2)).get())); EXPECT_EQ("number", JSONSchemaValidator::GetJSONSchemaType( - scoped_ptr<Value>(Value::CreateRealValue( + scoped_ptr<Value>(Value::CreateDoubleValue( pow(-2.0, DBL_MANT_DIG) * 2)).get())); EXPECT_EQ("string", JSONSchemaValidator::GetJSONSchemaType( @@ -520,10 +520,10 @@ void JSONSchemaValidatorTestBase::TestTypes() { schema->SetString("type", "number"); ExpectValid(TEST_SOURCE, - scoped_ptr<Value>(Value::CreateRealValue(88.8)).get(), + scoped_ptr<Value>(Value::CreateDoubleValue(88.8)).get(), schema.get(), NULL); ExpectValid(TEST_SOURCE, - scoped_ptr<Value>(Value::CreateRealValue(42)).get(), + scoped_ptr<Value>(Value::CreateDoubleValue(42)).get(), schema.get(), NULL); ExpectValid(TEST_SOURCE, scoped_ptr<Value>(Value::CreateIntegerValue(42)).get(), @@ -537,18 +537,18 @@ void JSONSchemaValidatorTestBase::TestTypes() { scoped_ptr<Value>(Value::CreateIntegerValue(42)).get(), schema.get(), NULL); ExpectValid(TEST_SOURCE, - scoped_ptr<Value>(Value::CreateRealValue(42)).get(), + scoped_ptr<Value>(Value::CreateDoubleValue(42)).get(), schema.get(), NULL); ExpectValid(TEST_SOURCE, scoped_ptr<Value>(Value::CreateIntegerValue(0)).get(), schema.get(), NULL); ExpectValid(TEST_SOURCE, scoped_ptr<Value>( - Value::CreateRealValue(pow(2.0, DBL_MANT_DIG))).get(), + Value::CreateDoubleValue(pow(2.0, DBL_MANT_DIG))).get(), schema.get(), NULL); ExpectValid(TEST_SOURCE, scoped_ptr<Value>( - Value::CreateRealValue(pow(-2.0, DBL_MANT_DIG))).get(), + Value::CreateDoubleValue(pow(-2.0, DBL_MANT_DIG))).get(), schema.get(), NULL); schema->SetString("type", "boolean"); @@ -600,14 +600,14 @@ void JSONSchemaValidatorTestBase::TestTypes() { schema->SetString("type", "integer"); ExpectNotValid(TEST_SOURCE, - scoped_ptr<Value>(Value::CreateRealValue(88.8)).get(), + scoped_ptr<Value>(Value::CreateDoubleValue(88.8)).get(), schema.get(), NULL, "", JSONSchemaValidator::FormatErrorMessage( JSONSchemaValidator::kInvalidType, "integer", "number")); schema->SetString("type", "integer"); ExpectNotValid(TEST_SOURCE, - scoped_ptr<Value>(Value::CreateRealValue(88.8)).get(), + scoped_ptr<Value>(Value::CreateDoubleValue(88.8)).get(), schema.get(), NULL, "", JSONSchemaValidator::FormatErrorMessage( JSONSchemaValidator::kInvalidType, "integer", "number")); diff --git a/chrome/common/json_value_serializer_unittest.cc b/chrome/common/json_value_serializer_unittest.cc index b3f3e0d..c52aa06 100644 --- a/chrome/common/json_value_serializer_unittest.cc +++ b/chrome/common/json_value_serializer_unittest.cc @@ -17,7 +17,7 @@ TEST(JSONValueSerializerTest, Roundtrip) { const std::string original_serialization = - "{\"bool\":true,\"int\":42,\"list\":[1,2],\"null\":null,\"real\":3.14}"; + "{\"bool\":true,\"double\":3.14,\"int\":42,\"list\":[1,2],\"null\":null}"; JSONStringValueSerializer serializer(original_serialization); scoped_ptr<Value> root(serializer.Deserialize(NULL, NULL)); ASSERT_TRUE(root.get()); @@ -38,9 +38,9 @@ TEST(JSONValueSerializerTest, Roundtrip) { ASSERT_TRUE(root_dict->GetInteger("int", &int_value)); ASSERT_EQ(42, int_value); - double real_value = 0.0; - ASSERT_TRUE(root_dict->GetReal("real", &real_value)); - ASSERT_DOUBLE_EQ(3.14, real_value); + double double_value = 0.0; + ASSERT_TRUE(root_dict->GetDouble("double", &double_value)); + ASSERT_DOUBLE_EQ(3.14, double_value); // We shouldn't be able to write using this serializer, since it was // initialized with a const string. @@ -63,10 +63,10 @@ TEST(JSONValueSerializerTest, Roundtrip) { const std::string pretty_serialization = "{" JSON_NEWLINE " \"bool\": true," JSON_NEWLINE + " \"double\": 3.14," JSON_NEWLINE " \"int\": 42," JSON_NEWLINE " \"list\": [ 1, 2 ]," JSON_NEWLINE - " \"null\": null," JSON_NEWLINE - " \"real\": 3.14" JSON_NEWLINE + " \"null\": null" JSON_NEWLINE "}" JSON_NEWLINE; #undef JSON_NEWLINE ASSERT_EQ(pretty_serialization, test_serialization); diff --git a/chrome/common/jstemplate_builder.cc b/chrome/common/jstemplate_builder.cc index 628edd7..35e4b3a 100644 --- a/chrome/common/jstemplate_builder.cc +++ b/chrome/common/jstemplate_builder.cc @@ -7,12 +7,11 @@ #include "chrome/common/jstemplate_builder.h" -#include "app/resource_bundle.h" #include "base/logging.h" #include "base/string_util.h" #include "chrome/common/json_value_serializer.h" - #include "grit/common_resources.h" +#include "ui/base/resource/resource_bundle.h" namespace jstemplate_builder { diff --git a/chrome/common/libxml_utils.cc b/chrome/common/libxml_utils.cc index 009f0d3..61d4237 100644 --- a/chrome/common/libxml_utils.cc +++ b/chrome/common/libxml_utils.cc @@ -5,8 +5,10 @@ #include "chrome/common/libxml_utils.h" #include "base/compiler_specific.h" +#include "base/file_path.h" #include "base/logging.h" #include "base/stringprintf.h" +#include "base/utf_string_conversions.h" #include "libxml/xmlreader.h" @@ -49,11 +51,19 @@ bool XmlReader::Load(const std::string& input) { return reader_ != NULL; } -bool XmlReader::LoadFile(const std::string& file_path) { - +bool XmlReader::LoadFile(const FilePath& file_path) { const int kParseOptions = XML_PARSE_RECOVER | // recover on errors XML_PARSE_NONET; // forbid network access - reader_ = xmlReaderForFile(file_path.c_str(), NULL, kParseOptions); + reader_ = xmlReaderForFile( +#if defined(OS_WIN) + // libxml takes UTF-8 paths on Windows; search the source for + // xmlWrapOpenUtf8 to see it converting UTF-8 back to wide + // characters. + WideToUTF8(file_path.value()).c_str(), +#else + file_path.value().c_str(), +#endif + NULL, kParseOptions); return reader_ != NULL; } diff --git a/chrome/common/libxml_utils.h b/chrome/common/libxml_utils.h index 55a935c..cf53341 100644 --- a/chrome/common/libxml_utils.h +++ b/chrome/common/libxml_utils.h @@ -11,6 +11,8 @@ #include "libxml/xmlreader.h" #include "libxml/xmlwriter.h" +class FilePath; + // Converts a libxml xmlChar* into a UTF-8 std::string. // NULL inputs produce an empty string. std::string XmlStringToStdString(const xmlChar* xmlstring); @@ -47,7 +49,7 @@ class XmlReader { bool Load(const std::string& input); // Load a document into the reader from a file. Returns false on error. - bool LoadFile(const std::string& file_path); + bool LoadFile(const FilePath& file_path); // Wrappers around libxml functions ----------------------------------------- diff --git a/chrome/common/logging_chrome.cc b/chrome/common/logging_chrome.cc index c607f21..e0f92d9 100644 --- a/chrome/common/logging_chrome.cc +++ b/chrome/common/logging_chrome.cc @@ -40,6 +40,7 @@ #include "base/path_service.h" #include "base/string_number_conversions.h" #include "base/string_util.h" +#include "base/threading/thread_restrictions.h" #include "base/time.h" #include "base/utf_string_conversions.h" #include "chrome/common/chrome_paths.h" @@ -58,6 +59,9 @@ static bool dialogs_are_suppressed_ = false; // InitChromeLogging() and the beginning of CleanupChromeLogging(). static bool chrome_logging_initialized_ = false; +// Set if we caled InitChromeLogging() but failed to initialize. +static bool chrome_logging_failed_ = false; + // This should be true for exactly the period between the end of // InitChromeLogging() and the beginning of CleanupChromeLogging(). static bool chrome_logging_redirected_ = false; @@ -213,15 +217,24 @@ void RedirectChromeLogging(const CommandLine& command_line) { // defaults to the profile dir. FilePath log_path = GetSessionLogFile(command_line); + // Creating symlink causes us to do blocking IO on UI thread. + // Temporarily allow it until we fix http://crbug.com/61143 + base::ThreadRestrictions::ScopedAllowIO allow_io; // Always force a new symlink when redirecting. FilePath target_path = SetUpSymlinkIfNeeded(log_path, true); + logging::DcheckState dcheck_state = + command_line.HasSwitch(switches::kEnableDCHECK) ? + logging::ENABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS : + logging::DISABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS; + // ChromeOS always logs through the symlink, so it shouldn't be // deleted if it already exists. if (!InitLogging(log_path.value().c_str(), DetermineLogMode(command_line), logging::LOCK_LOG_FILE, - logging::APPEND_TO_OLD_LOG_FILE)) { + logging::APPEND_TO_OLD_LOG_FILE, + dcheck_state)) { LOG(ERROR) << "Unable to initialize logging to " << log_path.value(); RemoveSymlinkAndLog(log_path, target_path); } else { @@ -262,21 +275,29 @@ void InitChromeLogging(const CommandLine& command_line, delete_old_log_file = logging::APPEND_TO_OLD_LOG_FILE; #endif + logging::DcheckState dcheck_state = + command_line.HasSwitch(switches::kEnableDCHECK) ? + logging::ENABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS : + logging::DISABLE_DCHECK_FOR_NON_OFFICIAL_RELEASE_BUILDS; + bool success = InitLogging(log_path.value().c_str(), DetermineLogMode(command_line), logging::LOCK_LOG_FILE, - delete_old_log_file); + delete_old_log_file, + dcheck_state); #if defined(OS_CHROMEOS) if (!success) { PLOG(ERROR) << "Unable to initialize logging to " << log_path.value() << " (which should be a link to " << target_path.value() << ")"; RemoveSymlinkAndLog(log_path, target_path); + chrome_logging_failed_ = true; return; } #else if (!success) { PLOG(ERROR) << "Unable to initialize logging to " << log_path.value(); + chrome_logging_failed_ = true; return; } #endif @@ -326,6 +347,9 @@ void InitChromeLogging(const CommandLine& command_line, // This is a no-op, but we'll keep it around in case // we need to do more cleanup in the future. void CleanupChromeLogging() { + if (chrome_logging_failed_) + return; // We failed to initiailize logging, no cleanup. + DCHECK(chrome_logging_initialized_) << "Attempted to clean up logging when it wasn't initialized."; diff --git a/chrome/common/metrics_helpers.cc b/chrome/common/metrics_helpers.cc index c452937..644df78 100644 --- a/chrome/common/metrics_helpers.cc +++ b/chrome/common/metrics_helpers.cc @@ -52,7 +52,7 @@ class MetricsLogBase::XmlWrapper { buffer_(NULL), writer_(NULL) { buffer_ = xmlBufferCreate(); - DCHECK(buffer_); + CHECK(buffer_); #if defined(OS_CHROMEOS) writer_ = xmlNewTextWriterDoc(&doc_, /* compression */ 0); @@ -151,6 +151,8 @@ void MetricsLogBase::CloseLog() { int MetricsLogBase::GetEncodedLogSize() { DCHECK(locked_); + CHECK(xml_wrapper_); + CHECK(xml_wrapper_->buffer()); return xml_wrapper_->buffer()->use; } diff --git a/chrome/common/native_web_keyboard_event.h b/chrome/common/native_web_keyboard_event.h index 1ed0cb1..f27aa78 100644 --- a/chrome/common/native_web_keyboard_event.h +++ b/chrome/common/native_web_keyboard_event.h @@ -7,7 +7,7 @@ #pragma once #include "base/basictypes.h" -#include "third_party/WebKit/WebKit/chromium/public/WebInputEvent.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h" #if defined(OS_WIN) #include <windows.h> diff --git a/chrome/common/native_web_keyboard_event_linux.cc b/chrome/common/native_web_keyboard_event_linux.cc index 7165c98..46fafd5 100644 --- a/chrome/common/native_web_keyboard_event_linux.cc +++ b/chrome/common/native_web_keyboard_event_linux.cc @@ -6,7 +6,7 @@ #include <gdk/gdk.h> -#include "third_party/WebKit/WebKit/chromium/public/gtk/WebInputEventFactory.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/gtk/WebInputEventFactory.h" using WebKit::WebInputEventFactory; diff --git a/chrome/common/native_web_keyboard_event_mac.mm b/chrome/common/native_web_keyboard_event_mac.mm index 0c11033..1fe53ae 100644 --- a/chrome/common/native_web_keyboard_event_mac.mm +++ b/chrome/common/native_web_keyboard_event_mac.mm @@ -6,7 +6,7 @@ #import <AppKit/AppKit.h> -#include "third_party/WebKit/WebKit/chromium/public/mac/WebInputEventFactory.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/mac/WebInputEventFactory.h" using WebKit::WebInputEventFactory; diff --git a/chrome/common/native_web_keyboard_event_win.cc b/chrome/common/native_web_keyboard_event_win.cc index 7608ec6..3f03d28 100644 --- a/chrome/common/native_web_keyboard_event_win.cc +++ b/chrome/common/native_web_keyboard_event_win.cc @@ -4,7 +4,7 @@ #include "chrome/common/native_web_keyboard_event.h" -#include "third_party/WebKit/WebKit/chromium/public/win/WebInputEventFactory.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/win/WebInputEventFactory.h" using WebKit::WebInputEventFactory; using WebKit::WebKeyboardEvent; diff --git a/chrome/common/native_window_notification_source.h b/chrome/common/native_window_notification_source.h index a8e5cae..240820e 100644 --- a/chrome/common/native_window_notification_source.h +++ b/chrome/common/native_window_notification_source.h @@ -7,7 +7,7 @@ #pragma once #include "chrome/common/notification_source.h" -#include "gfx/native_widget_types.h" +#include "ui/gfx/native_widget_types.h" // Specialization of the Source class for native windows. On Windows, these are // HWNDs rather than pointers, and since the Source class expects a pointer diff --git a/chrome/common/net/gaia/gaia_auth_consumer.cc b/chrome/common/net/gaia/gaia_auth_consumer.cc new file mode 100644 index 0000000..7c47b60 --- /dev/null +++ b/chrome/common/net/gaia/gaia_auth_consumer.cc @@ -0,0 +1,31 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/common/net/gaia/gaia_auth_consumer.h" + +GaiaAuthConsumer::ClientLoginResult::ClientLoginResult() + : two_factor(false) { +} + +GaiaAuthConsumer::ClientLoginResult::ClientLoginResult( + const std::string& new_sid, + const std::string& new_lsid, + const std::string& new_token, + const std::string& new_data) + : sid(new_sid), + lsid(new_lsid), + token(new_token), + data(new_data), + two_factor(false) {} + +GaiaAuthConsumer::ClientLoginResult::~ClientLoginResult() {} + +bool GaiaAuthConsumer::ClientLoginResult::operator==( + const ClientLoginResult &b) const { + return sid == b.sid && + lsid == b.lsid && + token == b.token && + data == b.data && + two_factor == b.two_factor; +} diff --git a/chrome/common/net/gaia/gaia_auth_consumer.h b/chrome/common/net/gaia/gaia_auth_consumer.h index d498e6c..4d6c37d 100644 --- a/chrome/common/net/gaia/gaia_auth_consumer.h +++ b/chrome/common/net/gaia/gaia_auth_consumer.h @@ -15,24 +15,14 @@ class GoogleServiceAuthError; class GaiaAuthConsumer { public: struct ClientLoginResult { - inline ClientLoginResult() : two_factor(false) {} - inline ClientLoginResult(const std::string& new_sid, - const std::string& new_lsid, - const std::string& new_token, - const std::string& new_data) - : sid(new_sid), - lsid(new_lsid), - token(new_token), - data(new_data), - two_factor(false) {} - - inline bool operator==(const ClientLoginResult &b) const { - return sid == b.sid && - lsid == b.lsid && - token == b.token && - data == b.data && - two_factor == b.two_factor; - } + ClientLoginResult(); + ClientLoginResult(const std::string& new_sid, + const std::string& new_lsid, + const std::string& new_token, + const std::string& new_data); + ~ClientLoginResult(); + + bool operator==(const ClientLoginResult &b) const; std::string sid; std::string lsid; diff --git a/chrome/common/net/gaia/gaia_auth_fetcher.cc b/chrome/common/net/gaia/gaia_auth_fetcher.cc index 0499168..520c135 100644 --- a/chrome/common/net/gaia/gaia_auth_fetcher.cc +++ b/chrome/common/net/gaia/gaia_auth_fetcher.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -314,10 +314,10 @@ void GaiaAuthFetcher::StartGetUserInfo(const std::string& lsid, // static GoogleServiceAuthError GaiaAuthFetcher::GenerateAuthError( const std::string& data, - const URLRequestStatus& status) { + const net::URLRequestStatus& status) { if (!status.is_success()) { - if (status.status() == URLRequestStatus::CANCELED) { + if (status.status() == net::URLRequestStatus::CANCELED) { return GoogleServiceAuthError(GoogleServiceAuthError::REQUEST_CANCELED); } else { LOG(WARNING) << "Could not reach Google Accounts servers: errno " @@ -361,10 +361,11 @@ GoogleServiceAuthError GaiaAuthFetcher::GenerateAuthError( } NOTREACHED(); + return GoogleServiceAuthError(GoogleServiceAuthError::SERVICE_UNAVAILABLE); } void GaiaAuthFetcher::OnClientLoginFetched(const std::string& data, - const URLRequestStatus& status, + const net::URLRequestStatus& status, int response_code) { if (status.is_success() && response_code == RC_REQUEST_OK) { @@ -382,7 +383,7 @@ void GaiaAuthFetcher::OnClientLoginFetched(const std::string& data, void GaiaAuthFetcher::OnIssueAuthTokenFetched( const std::string& data, - const URLRequestStatus& status, + const net::URLRequestStatus& status, int response_code) { if (status.is_success() && response_code == RC_REQUEST_OK) { // Only the bare token is returned in the body of this Gaia call @@ -396,7 +397,7 @@ void GaiaAuthFetcher::OnIssueAuthTokenFetched( void GaiaAuthFetcher::OnGetUserInfoFetched( const std::string& data, - const URLRequestStatus& status, + const net::URLRequestStatus& status, int response_code) { using std::vector; using std::string; @@ -420,7 +421,7 @@ void GaiaAuthFetcher::OnGetUserInfoFetched( void GaiaAuthFetcher::OnURLFetchComplete(const URLFetcher* source, const GURL& url, - const URLRequestStatus& status, + const net::URLRequestStatus& status, int response_code, const ResponseCookies& cookies, const std::string& data) { diff --git a/chrome/common/net/gaia/gaia_auth_fetcher_unittest.cc b/chrome/common/net/gaia/gaia_auth_fetcher_unittest.cc index c7814c9..0830766 100644 --- a/chrome/common/net/gaia/gaia_auth_fetcher_unittest.cc +++ b/chrome/common/net/gaia/gaia_auth_fetcher_unittest.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // @@ -115,7 +115,7 @@ TEST_F(GaiaAuthFetcherTest, ErrorComparator) { TEST_F(GaiaAuthFetcherTest, LoginNetFailure) { int error_no = net::ERR_CONNECTION_RESET; - URLRequestStatus status(URLRequestStatus::FAILED, error_no); + net::URLRequestStatus status(net::URLRequestStatus::FAILED, error_no); GoogleServiceAuthError expected_error = GoogleServiceAuthError::FromConnectionError(error_no); @@ -137,7 +137,7 @@ TEST_F(GaiaAuthFetcherTest, LoginNetFailure) { TEST_F(GaiaAuthFetcherTest, TokenNetFailure) { int error_no = net::ERR_CONNECTION_RESET; - URLRequestStatus status(URLRequestStatus::FAILED, error_no); + net::URLRequestStatus status(net::URLRequestStatus::FAILED, error_no); GoogleServiceAuthError expected_error = GoogleServiceAuthError::FromConnectionError(error_no); @@ -160,7 +160,7 @@ TEST_F(GaiaAuthFetcherTest, TokenNetFailure) { TEST_F(GaiaAuthFetcherTest, LoginDenied) { std::string data("Error=BadAuthentication"); - URLRequestStatus status(URLRequestStatus::SUCCESS, 0); + net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); GoogleServiceAuthError expected_error( GoogleServiceAuthError::INVALID_GAIA_CREDENTIALS); @@ -220,7 +220,7 @@ TEST_F(GaiaAuthFetcherTest, OnlineLogin) { GaiaAuthFetcher auth(&consumer, std::string(), profile_.GetRequestContext()); - URLRequestStatus status(URLRequestStatus::SUCCESS, 0); + net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); auth.OnURLFetchComplete(NULL, client_login_source_, status, @@ -236,7 +236,7 @@ TEST_F(GaiaAuthFetcherTest, WorkingIssueAuthToken) { GaiaAuthFetcher auth(&consumer, std::string(), profile_.GetRequestContext()); - URLRequestStatus status(URLRequestStatus::SUCCESS, 0); + net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); auth.OnURLFetchComplete(NULL, issue_auth_token_source_, status, @@ -270,7 +270,7 @@ TEST_F(GaiaAuthFetcherTest, TwoFactorLogin) { GaiaAuthFetcher auth(&consumer, std::string(), profile_.GetRequestContext()); - URLRequestStatus status(URLRequestStatus::SUCCESS, 0); + net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); auth.OnURLFetchComplete(NULL, client_login_source_, status, @@ -280,7 +280,7 @@ TEST_F(GaiaAuthFetcherTest, TwoFactorLogin) { } TEST_F(GaiaAuthFetcherTest, CaptchaParse) { - URLRequestStatus status(URLRequestStatus::SUCCESS, 0); + net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); std::string data = "Url=http://www.google.com/login/captcha\n" "Error=CaptchaRequired\n" "CaptchaToken=CCTOKEN\n" @@ -299,7 +299,7 @@ TEST_F(GaiaAuthFetcherTest, CaptchaParse) { } TEST_F(GaiaAuthFetcherTest, AccountDeletedError) { - URLRequestStatus status(URLRequestStatus::SUCCESS, 0); + net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); std::string data = "Error=AccountDeleted\n"; GoogleServiceAuthError error = GaiaAuthFetcher::GenerateAuthError(data, status); @@ -307,7 +307,7 @@ TEST_F(GaiaAuthFetcherTest, AccountDeletedError) { } TEST_F(GaiaAuthFetcherTest, AccountDisabledError) { - URLRequestStatus status(URLRequestStatus::SUCCESS, 0); + net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); std::string data = "Error=AccountDisabled\n"; GoogleServiceAuthError error = GaiaAuthFetcher::GenerateAuthError(data, status); @@ -315,7 +315,7 @@ TEST_F(GaiaAuthFetcherTest, AccountDisabledError) { } TEST_F(GaiaAuthFetcherTest,BadAuthenticationError) { - URLRequestStatus status(URLRequestStatus::SUCCESS, 0); + net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); std::string data = "Error=BadAuthentication\n"; GoogleServiceAuthError error = GaiaAuthFetcher::GenerateAuthError(data, status); @@ -323,7 +323,7 @@ TEST_F(GaiaAuthFetcherTest,BadAuthenticationError) { } TEST_F(GaiaAuthFetcherTest,IncomprehensibleError) { - URLRequestStatus status(URLRequestStatus::SUCCESS, 0); + net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); std::string data = "Error=Gobbledygook\n"; GoogleServiceAuthError error = GaiaAuthFetcher::GenerateAuthError(data, status); @@ -331,7 +331,7 @@ TEST_F(GaiaAuthFetcherTest,IncomprehensibleError) { } TEST_F(GaiaAuthFetcherTest,ServiceUnavailableError) { - URLRequestStatus status(URLRequestStatus::SUCCESS, 0); + net::URLRequestStatus status(net::URLRequestStatus::SUCCESS, 0); std::string data = "Error=ServiceUnavailable\n"; GoogleServiceAuthError error = GaiaAuthFetcher::GenerateAuthError(data, status); @@ -403,12 +403,13 @@ TEST_F(GaiaAuthFetcherTest, ClientFetchPending) { URLFetcher::set_factory(NULL); EXPECT_TRUE(auth.HasPendingFetch()); - auth.OnURLFetchComplete(NULL, - client_login_source_, - URLRequestStatus(URLRequestStatus::SUCCESS, 0), - RC_REQUEST_OK, - cookies_, - "SID=sid\nLSID=lsid\nAuth=auth\n"); + auth.OnURLFetchComplete( + NULL, + client_login_source_, + net::URLRequestStatus(net::URLRequestStatus::SUCCESS, 0), + RC_REQUEST_OK, + cookies_, + "SID=sid\nLSID=lsid\nAuth=auth\n"); EXPECT_FALSE(auth.HasPendingFetch()); } @@ -427,12 +428,13 @@ TEST_F(GaiaAuthFetcherTest, FullTokenSuccess) { URLFetcher::set_factory(NULL); EXPECT_TRUE(auth.HasPendingFetch()); - auth.OnURLFetchComplete(NULL, - issue_auth_token_source_, - URLRequestStatus(URLRequestStatus::SUCCESS, 0), - RC_REQUEST_OK, - cookies_, - "token"); + auth.OnURLFetchComplete( + NULL, + issue_auth_token_source_, + net::URLRequestStatus(net::URLRequestStatus::SUCCESS, 0), + RC_REQUEST_OK, + cookies_, + "token"); EXPECT_FALSE(auth.HasPendingFetch()); } @@ -451,11 +453,12 @@ TEST_F(GaiaAuthFetcherTest, FullTokenFailure) { URLFetcher::set_factory(NULL); EXPECT_TRUE(auth.HasPendingFetch()); - auth.OnURLFetchComplete(NULL, - issue_auth_token_source_, - URLRequestStatus(URLRequestStatus::SUCCESS, 0), - RC_FORBIDDEN, - cookies_, - ""); + auth.OnURLFetchComplete( + NULL, + issue_auth_token_source_, + net::URLRequestStatus(net::URLRequestStatus::SUCCESS, 0), + RC_FORBIDDEN, + cookies_, + ""); EXPECT_FALSE(auth.HasPendingFetch()); } diff --git a/chrome/common/net/gaia/gaia_auth_fetcher_unittest.h b/chrome/common/net/gaia/gaia_auth_fetcher_unittest.h index 4676a26..65235b1 100644 --- a/chrome/common/net/gaia/gaia_auth_fetcher_unittest.h +++ b/chrome/common/net/gaia/gaia_auth_fetcher_unittest.h @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // @@ -32,17 +32,17 @@ class MockFetcher : public URLFetcher { ~MockFetcher() {} void Start() { - URLRequestStatus::Status code; + net::URLRequestStatus::Status code; int http_code; if (success_) { http_code = RC_REQUEST_OK; - code = URLRequestStatus::SUCCESS; + code = net::URLRequestStatus::SUCCESS; } else { http_code = RC_FORBIDDEN; - code = URLRequestStatus::FAILED; + code = net::URLRequestStatus::FAILED; } - URLRequestStatus status(code, 0); + net::URLRequestStatus status(code, 0); delegate()->OnURLFetchComplete(NULL, url_, status, diff --git a/chrome/common/net/gaia/gaia_authenticator.h b/chrome/common/net/gaia/gaia_authenticator.h index be1b2d9..ce0500d 100644 --- a/chrome/common/net/gaia/gaia_authenticator.h +++ b/chrome/common/net/gaia/gaia_authenticator.h @@ -250,7 +250,7 @@ class GaiaAuthenticator { return auth_results_; } - typedef EventChannel<GaiaAuthEvent, Lock> Channel; + typedef EventChannel<GaiaAuthEvent, base::Lock> Channel; inline Channel* channel() const { return channel_; diff --git a/chrome/common/net/gaia/google_service_auth_error.cc b/chrome/common/net/gaia/google_service_auth_error.cc new file mode 100644 index 0000000..78595eb --- /dev/null +++ b/chrome/common/net/gaia/google_service_auth_error.cc @@ -0,0 +1,110 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/common/net/gaia/google_service_auth_error.h" + +#include <string> + +#include "base/logging.h" +#include "base/values.h" +#include "net/base/net_errors.h" + +GoogleServiceAuthError::Captcha::Captcha( + const std::string& t, const GURL& img, const GURL& unlock) + : token(t), image_url(img), unlock_url(unlock) {} + +bool GoogleServiceAuthError::operator==( + const GoogleServiceAuthError &b) const { + return (state_ == b.state_ && + network_error_ == b.network_error_ && + captcha_.token == b.captcha_.token && + captcha_.image_url == b.captcha_.image_url && + captcha_.unlock_url == b.captcha_.unlock_url); +} + +GoogleServiceAuthError::GoogleServiceAuthError(State s) + : state_(s), + captcha_("", GURL(), GURL()), + network_error_(0) { + // If the caller has no idea, then we just set it to a generic failure. + if (s == CONNECTION_FAILED) { + network_error_ = net::ERR_FAILED; + } +} + +GoogleServiceAuthError + GoogleServiceAuthError::FromConnectionError(int error) { + return GoogleServiceAuthError(CONNECTION_FAILED, error); +} + +GoogleServiceAuthError GoogleServiceAuthError::FromCaptchaChallenge( + const std::string& captcha_token, + const GURL& captcha_image_url, + const GURL& captcha_unlock_url) { + return GoogleServiceAuthError(CAPTCHA_REQUIRED, captcha_token, + captcha_image_url, captcha_unlock_url); +} + +GoogleServiceAuthError GoogleServiceAuthError::None() { + return GoogleServiceAuthError(NONE); +} + +const GoogleServiceAuthError::State& GoogleServiceAuthError::state() const { + return state_; +} + +const GoogleServiceAuthError::Captcha& GoogleServiceAuthError::captcha() const { + return captcha_; +} + +int GoogleServiceAuthError::network_error() const { + return network_error_; +} + +DictionaryValue* GoogleServiceAuthError::ToValue() const { + DictionaryValue* value = new DictionaryValue(); + std::string state_str; + switch (state_) { +#define STATE_CASE(x) case x: state_str = #x; break + STATE_CASE(NONE); + STATE_CASE(INVALID_GAIA_CREDENTIALS); + STATE_CASE(USER_NOT_SIGNED_UP); + STATE_CASE(CONNECTION_FAILED); + STATE_CASE(CAPTCHA_REQUIRED); + STATE_CASE(ACCOUNT_DELETED); + STATE_CASE(ACCOUNT_DISABLED); + STATE_CASE(SERVICE_UNAVAILABLE); + STATE_CASE(TWO_FACTOR); + STATE_CASE(REQUEST_CANCELED); + STATE_CASE(HOSTED_NOT_ALLOWED); +#undef STATE_CASE + default: + NOTREACHED(); + break; + } + value->SetString("state", state_str); + if (state_ == CAPTCHA_REQUIRED) { + DictionaryValue* captcha_value = new DictionaryValue(); + value->Set("captcha", captcha_value); + captcha_value->SetString("token", captcha_.token); + captcha_value->SetString("imageUrl", captcha_.image_url.spec()); + captcha_value->SetString("unlockUrl", captcha_.unlock_url.spec()); + } else if (state_ == CONNECTION_FAILED) { + value->SetString("networkError", net::ErrorToString(network_error_)); + } + return value; +} + +GoogleServiceAuthError::GoogleServiceAuthError(State s, int error) + : state_(s), + captcha_("", GURL(), GURL()), + network_error_(error) {} + +GoogleServiceAuthError::GoogleServiceAuthError( + State s, const std::string& captcha_token, + const GURL& captcha_image_url, + const GURL& captcha_unlock_url) + : state_(s), + captcha_(captcha_token, captcha_image_url, captcha_unlock_url), + network_error_(0) {} diff --git a/chrome/common/net/gaia/google_service_auth_error.h b/chrome/common/net/gaia/google_service_auth_error.h index 032f59f..747df44 100644 --- a/chrome/common/net/gaia/google_service_auth_error.h +++ b/chrome/common/net/gaia/google_service_auth_error.h @@ -1,4 +1,4 @@ -// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -24,9 +24,10 @@ #pragma once #include <string> -#include "base/logging.h" + #include "googleurl/src/gurl.h" -#include "net/base/net_errors.h" + +class DictionaryValue; class GoogleServiceAuthError { public: @@ -79,78 +80,48 @@ class GoogleServiceAuthError { // Additional data for CAPTCHA_REQUIRED errors. struct Captcha { - Captcha() {} - Captcha(const std::string& t, const GURL& img, const GURL& unlock) - : token(t), image_url(img), unlock_url(unlock) {} + Captcha(const std::string& t, const GURL& img, const GURL& unlock); std::string token; // Globally identifies the specific CAPTCHA challenge. GURL image_url; // The CAPTCHA image to show the user. GURL unlock_url; // Pretty unlock page containing above captcha. }; // For test only. - inline bool operator==(const GoogleServiceAuthError &b) const { - return (state_ == b.state_ && - network_error_ == b.network_error_ && - captcha_.token == b.captcha_.token && - captcha_.image_url == b.captcha_.image_url && - captcha_.unlock_url == b.captcha_.unlock_url); - } + bool operator==(const GoogleServiceAuthError &b) const; // Construct a GoogleServiceAuthError from a State with no additional data. - explicit GoogleServiceAuthError(State s) - : state_(s), - captcha_("", GURL(), GURL()), - network_error_(0) { - // If the caller has no idea, then we just set it to a generic failure. - if (s == CONNECTION_FAILED) { - network_error_ = net::ERR_FAILED; - } - } + explicit GoogleServiceAuthError(State s); // Construct a GoogleServiceAuthError from a network error. // It will be created with CONNECTION_FAILED set. - static GoogleServiceAuthError FromConnectionError(int error) { - return GoogleServiceAuthError(CONNECTION_FAILED, error); - } + static GoogleServiceAuthError FromConnectionError(int error); // Construct a CAPTCHA_REQUIRED error with CAPTCHA challenge data. static GoogleServiceAuthError FromCaptchaChallenge( const std::string& captcha_token, const GURL& captcha_image_url, - const GURL& captcha_unlock_url) { - return GoogleServiceAuthError(CAPTCHA_REQUIRED, captcha_token, - captcha_image_url, captcha_unlock_url); - } + const GURL& captcha_unlock_url); // Provided for convenience for clients needing to reset an instance to NONE. // (avoids err_ = GoogleServiceAuthError(GoogleServiceAuthError::NONE), due // to explicit class and State enum relation. Note: shouldn't be inlined! - static const GoogleServiceAuthError None() { - static const GoogleServiceAuthError e(NONE); - return e; - } + static GoogleServiceAuthError None(); // The error information. - const State& state() const { return state_; } - const Captcha& captcha() const { return captcha_; } - int network_error() const { - return network_error_; - } + const State& state() const; + const Captcha& captcha() const; + int network_error() const; + + // Returns info about this object in a dictionary. Caller takes + // ownership of returned dictionary. + DictionaryValue* ToValue() const; private: - GoogleServiceAuthError(State s, int error) - : state_(s), - captcha_("", GURL(), GURL()), - network_error_(error) { - } + GoogleServiceAuthError(State s, int error); GoogleServiceAuthError(State s, const std::string& captcha_token, const GURL& captcha_image_url, - const GURL& captcha_unlock_url) - : state_(s), - captcha_(captcha_token, captcha_image_url, captcha_unlock_url), - network_error_(0) { - } + const GURL& captcha_unlock_url); State state_; Captcha captcha_; diff --git a/chrome/common/net/gaia/google_service_auth_error_unittest.cc b/chrome/common/net/gaia/google_service_auth_error_unittest.cc new file mode 100644 index 0000000..f4fde5f --- /dev/null +++ b/chrome/common/net/gaia/google_service_auth_error_unittest.cc @@ -0,0 +1,71 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/common/net/gaia/google_service_auth_error.h" + +#include <string> + +#include "base/scoped_ptr.h" +#include "base/values.h" +#include "chrome/test/values_test_util.h" +#include "net/base/net_errors.h" +#include "testing/gtest/include/gtest/gtest.h" + +namespace { + +using test::ExpectStringValue; + +class GoogleServiceAuthErrorTest : public testing::Test {}; + +void TestSimpleState(GoogleServiceAuthError::State state) { + GoogleServiceAuthError error(state); + scoped_ptr<DictionaryValue> value(error.ToValue()); + EXPECT_EQ(1u, value->size()); + std::string state_str; + EXPECT_TRUE(value->GetString("state", &state_str)); + EXPECT_FALSE(state_str.empty()); + EXPECT_NE("CONNECTION_FAILED", state_str); + EXPECT_NE("CAPTCHA_REQUIRED", state_str); +} + +TEST_F(GoogleServiceAuthErrorTest, SimpleToValue) { + for (int i = GoogleServiceAuthError::NONE; + i <= GoogleServiceAuthError::USER_NOT_SIGNED_UP; ++i) { + TestSimpleState(static_cast<GoogleServiceAuthError::State>(i)); + } +} + +TEST_F(GoogleServiceAuthErrorTest, None) { + GoogleServiceAuthError error(GoogleServiceAuthError::None()); + scoped_ptr<DictionaryValue> value(error.ToValue()); + EXPECT_EQ(1u, value->size()); + ExpectStringValue("NONE", *value, "state"); +} + +TEST_F(GoogleServiceAuthErrorTest, ConnectionFailed) { + GoogleServiceAuthError error( + GoogleServiceAuthError::FromConnectionError(net::OK)); + scoped_ptr<DictionaryValue> value(error.ToValue()); + EXPECT_EQ(2u, value->size()); + ExpectStringValue("CONNECTION_FAILED", *value, "state"); + ExpectStringValue("net::OK", *value, "networkError"); +} + +TEST_F(GoogleServiceAuthErrorTest, CaptchaChallenge) { + GoogleServiceAuthError error( + GoogleServiceAuthError::FromCaptchaChallenge( + "captcha_token", GURL("http://www.google.com"), + GURL("http://www.bing.com"))); + scoped_ptr<DictionaryValue> value(error.ToValue()); + EXPECT_EQ(2u, value->size()); + ExpectStringValue("CAPTCHA_REQUIRED", *value, "state"); + DictionaryValue* captcha_value = NULL; + EXPECT_TRUE(value->GetDictionary("captcha", &captcha_value)); + ASSERT_TRUE(captcha_value); + ExpectStringValue("captcha_token", *captcha_value, "token"); + ExpectStringValue("http://www.google.com/", *captcha_value, "imageUrl"); + ExpectStringValue("http://www.bing.com/", *captcha_value, "unlockUrl"); +} + +} // namespace diff --git a/chrome/common/net/net_resource_provider.cc b/chrome/common/net/net_resource_provider.cc index c64c81d..346d763 100644 --- a/chrome/common/net/net_resource_provider.cc +++ b/chrome/common/net/net_resource_provider.cc @@ -6,14 +6,14 @@ #include <string> -#include "app/l10n_util.h" -#include "app/resource_bundle.h" #include "base/string_piece.h" #include "base/values.h" #include "chrome/common/jstemplate_builder.h" #include "grit/chromium_strings.h" #include "grit/generated_resources.h" #include "grit/net_resources.h" +#include "ui/base/l10n/l10n_util.h" +#include "ui/base/resource/resource_bundle.h" namespace { diff --git a/chrome/common/net/test_url_fetcher_factory.cc b/chrome/common/net/test_url_fetcher_factory.cc index 8336dfd..869e9be 100644 --- a/chrome/common/net/test_url_fetcher_factory.cc +++ b/chrome/common/net/test_url_fetcher_factory.cc @@ -1,8 +1,9 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "chrome/common/net/test_url_fetcher_factory.h" + #include <string> #include "base/compiler_specific.h" @@ -18,6 +19,10 @@ TestURLFetcher::TestURLFetcher(int id, original_url_(url) { } +TestURLFetcherFactory::TestURLFetcherFactory() {} + +TestURLFetcherFactory::~TestURLFetcherFactory() {} + URLFetcher* TestURLFetcherFactory::CreateURLFetcher( int id, const GURL& url, @@ -67,9 +72,9 @@ class FakeURLFetcher : public URLFetcher { // This is the method which actually calls the delegate that is passed in the // constructor. void RunDelegate() { - URLRequestStatus status; - status.set_status(success_ ? URLRequestStatus::SUCCESS : - URLRequestStatus::FAILED); + net::URLRequestStatus status; + status.set_status(success_ ? net::URLRequestStatus::SUCCESS : + net::URLRequestStatus::FAILED); delegate()->OnURLFetchComplete(this, url_, status, success_ ? 200 : 500, ResponseCookies(), response_data_); } @@ -86,6 +91,10 @@ class FakeURLFetcher : public URLFetcher { DISALLOW_COPY_AND_ASSIGN(FakeURLFetcher); }; +FakeURLFetcherFactory::FakeURLFetcherFactory() {} + +FakeURLFetcherFactory::~FakeURLFetcherFactory() {} + URLFetcher* FakeURLFetcherFactory::CreateURLFetcher( int id, const GURL& url, diff --git a/chrome/common/net/test_url_fetcher_factory.h b/chrome/common/net/test_url_fetcher_factory.h index 73f4b46..65625a4 100644 --- a/chrome/common/net/test_url_fetcher_factory.h +++ b/chrome/common/net/test_url_fetcher_factory.h @@ -76,7 +76,8 @@ class TestURLFetcher : public URLFetcher { // are registered in a map by the id passed to the create method. class TestURLFetcherFactory : public URLFetcher::Factory { public: - TestURLFetcherFactory() {} + TestURLFetcherFactory(); + virtual ~TestURLFetcherFactory(); virtual URLFetcher* CreateURLFetcher(int id, const GURL& url, @@ -128,7 +129,8 @@ class TestURLFetcherFactory : public URLFetcher::Factory { class FakeURLFetcherFactory : public URLFetcher::Factory { public: - FakeURLFetcherFactory() {} + FakeURLFetcherFactory(); + virtual ~FakeURLFetcherFactory(); // If no fake response is set for the given URL this method will return NULL. // Otherwise, it will return a URLFetcher object which will respond with the diff --git a/chrome/common/net/url_fetcher.cc b/chrome/common/net/url_fetcher.cc index 53112f3..150dbab 100644 --- a/chrome/common/net/url_fetcher.cc +++ b/chrome/common/net/url_fetcher.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -8,7 +8,6 @@ #include "base/compiler_specific.h" #include "base/lazy_instance.h" -#include "base/lock.h" #include "base/message_loop_proxy.h" #include "base/scoped_ptr.h" #include "base/stl_util-inl.h" @@ -95,7 +94,7 @@ class URLFetcher::Core void StartURLRequest(); void StartURLRequestWhenAppropriate(); void CancelURLRequest(); - void OnCompletedURLRequest(const URLRequestStatus& status); + void OnCompletedURLRequest(const net::URLRequestStatus& status); void NotifyMalformedContent(); // Deletes the request, removes it from the registry, and removes the @@ -106,6 +105,12 @@ class URLFetcher::Core // |original_url_| and |url_|. base::TimeTicks GetBackoffReleaseTime(); + void CompleteAddingUploadDataChunk(const std::string& data); + + // Adds a block of data to be uploaded in a POST body. This can only be called + // after Start(). + void AppendChunkToUpload(const std::string& data); + URLFetcher* fetcher_; // Corresponding fetcher object GURL original_url_; // The URL we were asked to fetch GURL url_; // The URL we eventually wound up at @@ -131,6 +136,8 @@ class URLFetcher::Core std::string upload_content_; // HTTP POST payload std::string upload_content_type_; // MIME type of POST payload + std::string referrer_; // HTTP Referer header value + bool is_chunked_upload_; // True if using chunked transfer encoding // Used to determine how long to wait before making a request or doing a // retry. @@ -230,6 +237,7 @@ URLFetcher::Core::Core(URLFetcher* fetcher, load_flags_(net::LOAD_NORMAL), response_code_(-1), buffer_(new net::IOBuffer(kBufferSize)), + is_chunked_upload_(false), num_retries_(0), was_cancelled_(false) { } @@ -291,6 +299,26 @@ void URLFetcher::Core::OnResponseStarted(net::URLRequest* request) { OnReadCompleted(request_.get(), bytes_read); } +void URLFetcher::Core::CompleteAddingUploadDataChunk( + const std::string& content) { + DCHECK(is_chunked_upload_); + DCHECK(request_.get()); + if (content.length()) { + request_->AppendChunkToUpload(content.data(), + static_cast<int>(content.length())); + } else { + request_->MarkEndOfChunks(); + } +} + +void URLFetcher::Core::AppendChunkToUpload(const std::string& content) { + DCHECK(delegate_loop_proxy_); + CHECK(io_message_loop_proxy_.get()); + io_message_loop_proxy_->PostTask( + FROM_HERE, + NewRunnableMethod(this, &Core::CompleteAddingUploadDataChunk, content)); +} + void URLFetcher::Core::OnReadCompleted(net::URLRequest* request, int bytes_read) { DCHECK(request == request_); @@ -343,22 +371,27 @@ void URLFetcher::Core::StartURLRequest() { if (!g_interception_enabled) { flags = flags | net::LOAD_DISABLE_INTERCEPT; } + if (is_chunked_upload_) + request_->EnableChunkedUpload(); request_->set_load_flags(flags); request_->set_context(request_context_getter_->GetURLRequestContext()); + request_->set_referrer(referrer_); switch (request_type_) { case GET: break; case POST: - DCHECK(!upload_content_.empty()); + DCHECK(!upload_content_.empty() || is_chunked_upload_); DCHECK(!upload_content_type_.empty()); request_->set_method("POST"); extra_request_headers_.SetHeader(net::HttpRequestHeaders::kContentType, upload_content_type_); - request_->AppendBytesToUpload(upload_content_.data(), - static_cast<int>(upload_content_.size())); + if (!upload_content_.empty()) { + request_->AppendBytesToUpload( + upload_content_.data(), static_cast<int>(upload_content_.length())); + } break; case HEAD: @@ -417,7 +450,8 @@ void URLFetcher::Core::CancelURLRequest() { was_cancelled_ = true; } -void URLFetcher::Core::OnCompletedURLRequest(const URLRequestStatus& status) { +void URLFetcher::Core::OnCompletedURLRequest( + const net::URLRequestStatus& status) { DCHECK(delegate_loop_proxy_->BelongsToCurrentThread()); // Checks the response from server. @@ -481,14 +515,37 @@ base::TimeTicks URLFetcher::Core::GetBackoffReleaseTime() { void URLFetcher::set_upload_data(const std::string& upload_content_type, const std::string& upload_content) { + DCHECK(!core_->is_chunked_upload_); core_->upload_content_type_ = upload_content_type; core_->upload_content_ = upload_content; } +void URLFetcher::set_chunked_upload(const std::string& content_type) { + DCHECK(core_->is_chunked_upload_ || + (core_->upload_content_type_.empty() && + core_->upload_content_.empty())); + core_->upload_content_type_ = content_type; + core_->upload_content_.clear(); + core_->is_chunked_upload_ = true; +} + +void URLFetcher::AppendChunkToUpload(const std::string& data) { + DCHECK(data.length()); + core_->AppendChunkToUpload(data); +} + +void URLFetcher::MarkEndOfChunks() { + core_->AppendChunkToUpload(std::string()); +} + const std::string& URLFetcher::upload_data() const { return core_->upload_content_; } +void URLFetcher::set_referrer(const std::string& referrer) { + core_->referrer_ = referrer; +} + void URLFetcher::set_load_flags(int load_flags) { core_->load_flags_ = load_flags; } diff --git a/chrome/common/net/url_fetcher.h b/chrome/common/net/url_fetcher.h index 8c42398..524e7cb 100644 --- a/chrome/common/net/url_fetcher.h +++ b/chrome/common/net/url_fetcher.h @@ -136,6 +136,21 @@ class URLFetcher { void set_upload_data(const std::string& upload_content_type, const std::string& upload_content); + // Indicates that the POST data is sent via chunked transfer encoding. + // This may only be called before calling Start(). + // Use AppendChunkToUpload() to give the data chunks after calling Start(). + void set_chunked_upload(const std::string& upload_content_type); + + // Adds the given bytes to a request's POST data transmitted using chunked + // transfer encoding. + // This method should be called ONLY after calling Start(). + void AppendChunkToUpload(const std::string& data); + + // Signals the end of a chunked transfer encoded data stream. This method + // should be called ONLY after calling Start(), set_chunked_upload() and + // typically one or more calls to AppendChunkToUpload. + void MarkEndOfChunks(); + // Set one or more load flags as defined in net/base/load_flags.h. Must be // called before the request is started. void set_load_flags(int load_flags); @@ -143,11 +158,15 @@ class URLFetcher { // Returns the current load flags. int load_flags() const; + // The referrer URL for the request. Must be called before the request is + // started. + void set_referrer(const std::string& referrer); + // Set extra headers on the request. Must be called before the request // is started. void set_extra_request_headers(const std::string& extra_request_headers); - // Set the URLRequestContext on the request. Must be called before the + // Set the net::URLRequestContext on the request. Must be called before the // request is started. #ifdef ANDROID // TODO: Upstream. diff --git a/chrome/common/net/url_fetcher_unittest.cc b/chrome/common/net/url_fetcher_unittest.cc index 1618892..0d36f02 100644 --- a/chrome/common/net/url_fetcher_unittest.cc +++ b/chrome/common/net/url_fetcher_unittest.cc @@ -1,18 +1,18 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "base/message_loop_proxy.h" -#include "base/threading/thread.h" #include "base/synchronization/waitable_event.h" +#include "base/threading/thread.h" #include "build/build_config.h" #include "chrome/common/chrome_plugin_lib.h" #include "chrome/common/net/url_fetcher.h" #include "chrome/common/net/url_request_context_getter.h" #include "net/http/http_response_headers.h" #include "net/test/test_server.h" +#include "net/url_request/url_request_test_util.h" #include "net/url_request/url_request_throttler_manager.h" -#include "net/url_request/url_request_unittest.h" #include "testing/gtest/include/gtest/gtest.h" #if defined(USE_NSS) @@ -34,7 +34,7 @@ class TestURLRequestContextGetter : public URLRequestContextGetter { base::MessageLoopProxy* io_message_loop_proxy) : io_message_loop_proxy_(io_message_loop_proxy) { } - virtual URLRequestContext* GetURLRequestContext() { + virtual net::URLRequestContext* GetURLRequestContext() { if (!context_) context_ = new TestURLRequestContext(); return context_; @@ -49,7 +49,7 @@ class TestURLRequestContextGetter : public URLRequestContextGetter { private: ~TestURLRequestContextGetter() {} - scoped_refptr<URLRequestContext> context_; + scoped_refptr<net::URLRequestContext> context_; }; class URLFetcherTest : public testing::Test, public URLFetcher::Delegate { @@ -62,7 +62,7 @@ class URLFetcherTest : public testing::Test, public URLFetcher::Delegate { // URLFetcher::Delegate virtual void OnURLFetchComplete(const URLFetcher* source, const GURL& url, - const URLRequestStatus& status, + const net::URLRequestStatus& status, int response_code, const ResponseCookies& cookies, const std::string& data); @@ -108,7 +108,7 @@ class URLFetcherPostTest : public URLFetcherTest { // URLFetcher::Delegate virtual void OnURLFetchComplete(const URLFetcher* source, const GURL& url, - const URLRequestStatus& status, + const net::URLRequestStatus& status, int response_code, const ResponseCookies& cookies, const std::string& data); @@ -120,7 +120,7 @@ class URLFetcherHeadersTest : public URLFetcherTest { // URLFetcher::Delegate virtual void OnURLFetchComplete(const URLFetcher* source, const GURL& url, - const URLRequestStatus& status, + const net::URLRequestStatus& status, int response_code, const ResponseCookies& cookies, const std::string& data); @@ -133,7 +133,7 @@ class URLFetcherProtectTest : public URLFetcherTest { // URLFetcher::Delegate virtual void OnURLFetchComplete(const URLFetcher* source, const GURL& url, - const URLRequestStatus& status, + const net::URLRequestStatus& status, int response_code, const ResponseCookies& cookies, const std::string& data); @@ -149,7 +149,7 @@ class URLFetcherProtectTestPassedThrough : public URLFetcherTest { // URLFetcher::Delegate virtual void OnURLFetchComplete(const URLFetcher* source, const GURL& url, - const URLRequestStatus& status, + const net::URLRequestStatus& status, int response_code, const ResponseCookies& cookies, const std::string& data); @@ -165,7 +165,7 @@ class URLFetcherBadHTTPSTest : public URLFetcherTest { // URLFetcher::Delegate virtual void OnURLFetchComplete(const URLFetcher* source, const GURL& url, - const URLRequestStatus& status, + const net::URLRequestStatus& status, int response_code, const ResponseCookies& cookies, const std::string& data); @@ -181,7 +181,7 @@ class URLFetcherCancelTest : public URLFetcherTest { // URLFetcher::Delegate virtual void OnURLFetchComplete(const URLFetcher* source, const GURL& url, - const URLRequestStatus& status, + const net::URLRequestStatus& status, int response_code, const ResponseCookies& cookies, const std::string& data); @@ -206,7 +206,7 @@ class CancelTestURLRequestContextGetter : public URLRequestContextGetter { : io_message_loop_proxy_(io_message_loop_proxy), context_created_(false, false) { } - virtual URLRequestContext* GetURLRequestContext() { + virtual net::URLRequestContext* GetURLRequestContext() { if (!context_) { context_ = new CancelTestURLRequestContext(); context_created_.Signal(); @@ -225,7 +225,7 @@ class CancelTestURLRequestContextGetter : public URLRequestContextGetter { scoped_refptr<base::MessageLoopProxy> io_message_loop_proxy_; base::WaitableEvent context_created_; - scoped_refptr<URLRequestContext> context_; + scoped_refptr<net::URLRequestContext> context_; }; // Version of URLFetcherTest that tests retying the same request twice. @@ -234,7 +234,7 @@ class URLFetcherMultipleAttemptTest : public URLFetcherTest { // URLFetcher::Delegate virtual void OnURLFetchComplete(const URLFetcher* source, const GURL& url, - const URLRequestStatus& status, + const net::URLRequestStatus& status, int response_code, const ResponseCookies& cookies, const std::string& data); @@ -269,7 +269,7 @@ void URLFetcherTest::CreateFetcher(const GURL& url) { void URLFetcherTest::OnURLFetchComplete(const URLFetcher* source, const GURL& url, - const URLRequestStatus& status, + const net::URLRequestStatus& status, int response_code, const ResponseCookies& cookies, const std::string& data) { @@ -297,7 +297,7 @@ void URLFetcherPostTest::CreateFetcher(const GURL& url) { void URLFetcherPostTest::OnURLFetchComplete(const URLFetcher* source, const GURL& url, - const URLRequestStatus& status, + const net::URLRequestStatus& status, int response_code, const ResponseCookies& cookies, const std::string& data) { @@ -309,7 +309,7 @@ void URLFetcherPostTest::OnURLFetchComplete(const URLFetcher* source, void URLFetcherHeadersTest::OnURLFetchComplete( const URLFetcher* source, const GURL& url, - const URLRequestStatus& status, + const net::URLRequestStatus& status, int response_code, const ResponseCookies& cookies, const std::string& data) { @@ -330,12 +330,13 @@ void URLFetcherProtectTest::CreateFetcher(const GURL& url) { fetcher_->Start(); } -void URLFetcherProtectTest::OnURLFetchComplete(const URLFetcher* source, - const GURL& url, - const URLRequestStatus& status, - int response_code, - const ResponseCookies& cookies, - const std::string& data) { +void URLFetcherProtectTest::OnURLFetchComplete( + const URLFetcher* source, + const GURL& url, + const net::URLRequestStatus& status, + int response_code, + const ResponseCookies& cookies, + const std::string& data) { const TimeDelta one_second = TimeDelta::FromMilliseconds(1000); if (response_code >= 500) { // Now running ServerUnavailable test. @@ -374,7 +375,7 @@ void URLFetcherProtectTestPassedThrough::CreateFetcher(const GURL& url) { void URLFetcherProtectTestPassedThrough::OnURLFetchComplete( const URLFetcher* source, const GURL& url, - const URLRequestStatus& status, + const net::URLRequestStatus& status, int response_code, const ResponseCookies& cookies, const std::string& data) { @@ -413,13 +414,13 @@ URLFetcherBadHTTPSTest::URLFetcherBadHTTPSTest() { void URLFetcherBadHTTPSTest::OnURLFetchComplete( const URLFetcher* source, const GURL& url, - const URLRequestStatus& status, + const net::URLRequestStatus& status, int response_code, const ResponseCookies& cookies, const std::string& data) { // This part is different from URLFetcherTest::OnURLFetchComplete // because this test expects the request to be cancelled. - EXPECT_EQ(URLRequestStatus::CANCELED, status.status()); + EXPECT_EQ(net::URLRequestStatus::CANCELED, status.status()); EXPECT_EQ(net::ERR_ABORTED, status.os_error()); EXPECT_EQ(-1, response_code); EXPECT_TRUE(cookies.empty()); @@ -437,18 +438,19 @@ void URLFetcherCancelTest::CreateFetcher(const GURL& url) { fetcher_->set_request_context(context_getter); fetcher_->set_max_retries(2); fetcher_->Start(); - // We need to wait for the creation of the URLRequestContext, since we + // We need to wait for the creation of the net::URLRequestContext, since we // rely on it being destroyed as a signal to end the test. context_getter->WaitForContextCreation(); CancelRequest(); } -void URLFetcherCancelTest::OnURLFetchComplete(const URLFetcher* source, - const GURL& url, - const URLRequestStatus& status, - int response_code, - const ResponseCookies& cookies, - const std::string& data) { +void URLFetcherCancelTest::OnURLFetchComplete( + const URLFetcher* source, + const GURL& url, + const net::URLRequestStatus& status, + int response_code, + const ResponseCookies& cookies, + const std::string& data) { // We should have cancelled the request before completion. ADD_FAILURE(); delete fetcher_; @@ -465,7 +467,7 @@ void URLFetcherCancelTest::CancelRequest() { void URLFetcherMultipleAttemptTest::OnURLFetchComplete( const URLFetcher* source, const GURL& url, - const URLRequestStatus& status, + const net::URLRequestStatus& status, int response_code, const ResponseCookies& cookies, const std::string& data) { @@ -499,7 +501,12 @@ TEST_F(URLFetcherTest, SameThreadsTest) { MessageLoop::current()->Run(); } +#if defined(OS_MACOSX) +// SIGSEGV on Mac: http://crbug.com/60426 +TEST_F(URLFetcherTest, DISABLED_DifferentThreadsTest) { +#else TEST_F(URLFetcherTest, DifferentThreadsTest) { +#endif net::TestServer test_server(net::TestServer::TYPE_HTTP, FilePath(kDocRoot)); ASSERT_TRUE(test_server.Start()); @@ -516,7 +523,12 @@ TEST_F(URLFetcherTest, DifferentThreadsTest) { MessageLoop::current()->Run(); } +#if defined(OS_MACOSX) +// SIGSEGV on Mac: http://crbug.com/60426 +TEST_F(URLFetcherPostTest, DISABLED_Basic) { +#else TEST_F(URLFetcherPostTest, Basic) { +#endif net::TestServer test_server(net::TestServer::TYPE_HTTP, FilePath(kDocRoot)); ASSERT_TRUE(test_server.Start()); @@ -600,7 +612,12 @@ TEST_F(URLFetcherProtectTestPassedThrough, ServerUnavailablePropagateResponse) { net::URLRequestThrottlerManager::GetInstance()->EraseEntryForTests(url); } +#if defined(OS_MACOSX) +// SIGSEGV on Mac: http://crbug.com/60426 +TEST_F(URLFetcherBadHTTPSTest, DISABLED_BadHTTPSTest) { +#else TEST_F(URLFetcherBadHTTPSTest, BadHTTPSTest) { +#endif net::TestServer::HTTPSOptions https_options( net::TestServer::HTTPSOptions::CERT_EXPIRED); net::TestServer test_server(https_options, FilePath(kDocRoot)); @@ -610,7 +627,12 @@ TEST_F(URLFetcherBadHTTPSTest, BadHTTPSTest) { MessageLoop::current()->Run(); } +#if defined(OS_MACOSX) +// SIGSEGV on Mac: http://crbug.com/60426 +TEST_F(URLFetcherCancelTest, DISABLED_ReleasesContext) { +#else TEST_F(URLFetcherCancelTest, ReleasesContext) { +#endif net::TestServer test_server(net::TestServer::TYPE_HTTP, FilePath(kDocRoot)); ASSERT_TRUE(test_server.Start()); diff --git a/chrome/common/net/url_request_context_getter.h b/chrome/common/net/url_request_context_getter.h index 0c060e5..8b75a74 100644 --- a/chrome/common/net/url_request_context_getter.h +++ b/chrome/common/net/url_request_context_getter.h @@ -20,7 +20,7 @@ class URLRequestContext; struct URLRequestContextGetterTraits; -// Interface for retrieving an URLRequestContext. +// Interface for retrieving an net::URLRequestContext. class URLRequestContextGetter : public base::RefCountedThreadSafe<URLRequestContextGetter, URLRequestContextGetterTraits> { @@ -31,7 +31,7 @@ class URLRequestContextGetter // implementations can override it. virtual net::CookieStore* GetCookieStore(); // Returns a MessageLoopProxy corresponding to the thread on which the - // request IO happens (the thread on which the returned URLRequestContext + // request IO happens (the thread on which the returned net::URLRequestContext // may be used). virtual scoped_refptr<base::MessageLoopProxy> GetIOMessageLoopProxy() const = 0; diff --git a/chrome/common/net/url_request_intercept_job.cc b/chrome/common/net/url_request_intercept_job.cc index 641a8e8..89b0c55 100644 --- a/chrome/common/net/url_request_intercept_job.cc +++ b/chrome/common/net/url_request_intercept_job.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // @@ -91,10 +91,11 @@ bool URLRequestInterceptJob::ReadRawData(net::IOBuffer* dest, int dest_size, if (rv == CPERR_IO_PENDING) { read_buffer_ = dest; read_buffer_size_ = dest_size; - SetStatus(URLRequestStatus(URLRequestStatus::IO_PENDING, 0)); + SetStatus(net::URLRequestStatus(net::URLRequestStatus::IO_PENDING, 0)); } else { // TODO(mpcomplete): better error code - NotifyDone(URLRequestStatus(URLRequestStatus::FAILED, net::ERR_FAILED)); + NotifyDone(net::URLRequestStatus(net::URLRequestStatus::FAILED, + net::ERR_FAILED)); } return false; @@ -208,8 +209,8 @@ void URLRequestInterceptJob::StartAsync() { void URLRequestInterceptJob::OnStartCompleted(int result) { if (result != CPERR_SUCCESS) { - NotifyDone(URLRequestStatus(URLRequestStatus::FAILED, - net::ERR_CONNECTION_FAILED)); + NotifyDone(net::URLRequestStatus(net::URLRequestStatus::FAILED, + net::ERR_CONNECTION_FAILED)); return; } @@ -218,11 +219,12 @@ void URLRequestInterceptJob::OnStartCompleted(int result) { void URLRequestInterceptJob::OnReadCompleted(int bytes_read) { if (bytes_read < 0) { - NotifyDone(URLRequestStatus(URLRequestStatus::FAILED, net::ERR_FAILED)); + NotifyDone(net::URLRequestStatus(net::URLRequestStatus::FAILED, + net::ERR_FAILED)); return; } - SetStatus(URLRequestStatus()); // clear the async flag + SetStatus(net::URLRequestStatus()); // clear the async flag NotifyReadComplete(bytes_read); } diff --git a/chrome/common/net/x509_certificate_model.cc b/chrome/common/net/x509_certificate_model.cc index 0ec2bff..2d4ffd0 100644 --- a/chrome/common/net/x509_certificate_model.cc +++ b/chrome/common/net/x509_certificate_model.cc @@ -6,9 +6,9 @@ #include <unicode/uidna.h> -#include "app/l10n_util.h" #include "base/utf_string_conversions.h" #include "grit/generated_resources.h" +#include "ui/base/l10n/l10n_util.h" namespace x509_certificate_model { @@ -16,7 +16,7 @@ std::string ProcessIDN(const std::string& input) { // Convert the ASCII input to a string16 for ICU. string16 input16; input16.reserve(input.length()); - std::copy(input.begin(), input.end(), std::back_inserter(input16)); + input16.insert(input16.end(), input.begin(), input.end()); string16 output16; output16.resize(input.length()); diff --git a/chrome/common/notification_service.cc b/chrome/common/notification_service.cc index 4414cc6..06e4819 100644 --- a/chrome/common/notification_service.cc +++ b/chrome/common/notification_service.cc @@ -133,7 +133,7 @@ NotificationService::~NotificationService() { // This may not be completely fixable -- see // http://code.google.com/p/chromium/issues/detail?id=11010 . VLOG(1) << observer_counts_[i] << " notification observer(s) leaked " - " of notification type " << i; + "of notification type " << i; } } #endif diff --git a/chrome/common/notification_type.h b/chrome/common/notification_type.h index 8dbc2a3..0c39093 100644 --- a/chrome/common/notification_type.h +++ b/chrome/common/notification_type.h @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -149,6 +149,12 @@ class NotificationType { // are provided. RESOURCE_RECEIVED_REDIRECT, + // A new window is created in response to a request from a renderer. The + // source will be a Source<TabContents> corresponding to the tab the + // request originates from. Details in the form of a + // ViewHostMsg_CreateWindow_Params object are provided. + CREATING_NEW_WINDOW, + // SSL --------------------------------------------------------------------- // Updating the SSL security indicators (the lock icon and such) proceeds @@ -444,6 +450,35 @@ class NotificationType { // the RenderWidgetHost, the details are not used. RENDER_WIDGET_HOST_DESTROYED, + // Sent when the widget is about to paint. The source is the + // RenderWidgetHost, the details are not used. + RENDER_WIDGET_HOST_WILL_PAINT, + + // Sent after the widget has painted. The source is the RenderWidgetHost, + // the details are not used. + RENDER_WIDGET_HOST_DID_PAINT, + + // Indicates the RenderWidgetHost is about to destroy the backing store. The + // backing store will still be valid when this call is made. The source is + // the RenderWidgetHost, the details is the BackingStore. + RENDER_WIDGET_HOST_WILL_DESTROY_BACKING_STORE, + + // Indicates that the RenderWidgetHost just updated the backing store. The + // source is the RenderWidgetHost, the details are not used. + RENDER_WIDGET_HOST_DID_UPDATE_BACKING_STORE, + + // This notifies the observer that a PaintAtSizeACK was received. The source + // is the RenderWidgetHost, the details are an instance of + // RenderWidgetHost::PaintAtSizeAckDetails. + RENDER_WIDGET_HOST_DID_RECEIVE_PAINT_AT_SIZE_ACK, + + // This notifies the observer that a HandleInputEventACK was received. The + // source is the RenderWidgetHost, the details are the type of event + // received. + // Note: The RenderWidgetHost may be deallocated at this point. + // Used only in testing. + RENDER_WIDGET_HOST_DID_RECEIVE_INPUT_EVENT_ACK, + // Sent from ~RenderViewHost. The source is the TabContents. RENDER_VIEW_HOST_DELETED, @@ -491,9 +526,10 @@ class NotificationType { // guaranteed to be valid after the notification. WEB_CACHE_STATS_OBSERVED, - // The focused element inside a page has changed. The source is the render - // view host for the page. The details are a Details<const bool> that - // indicates whether or not an editable node was focused. + // The focused element inside a page has changed. The source is the + // TabContents containing the render view host for the page. The details is + // a Details<const bool> that indicates whether or not an editable node was + // focused. FOCUS_CHANGED_IN_PAGE, // Notification posted from ExecuteJavascriptInWebFrameNotifyResult. The @@ -569,10 +605,6 @@ class NotificationType { // interception. No details are expected. CHROME_PLUGIN_UNLOADED, - // This is sent in the RenderView when previously blocked plugins on a page - // should be loaded. The source is the RenderView. No details are expected. - SHOULD_LOAD_PLUGINS, - // Sent by the PluginUpdater when there is a change of plugin // enable/disable status. PLUGIN_ENABLE_STATUS_CHANGED, @@ -752,19 +784,10 @@ class NotificationType { // Autocomplete ------------------------------------------------------------ - // Sent by the autocomplete controller at least once per query, each time - // new matches are available, subject to rate-limiting/coalescing to reduce - // the number of updates. The details hold the AutocompleteResult that - // observers should use if they want to see the updated matches. + // Sent by the autocomplete controller each time the result set updates. + // The details is a boolean indicating if the default match has changed. AUTOCOMPLETE_CONTROLLER_RESULT_UPDATED, - // Sent by the autocomplete controller immediately after synchronous matches - // become available, and thereafter at the same time that - // AUTOCOMPLETE_CONTROLLER_RESULT_UPDATED is sent. The details hold the - // AutocompleteResult that observers should use if they want to see the - // up-to-date matches. - AUTOCOMPLETE_CONTROLLER_DEFAULT_MATCH_UPDATED, - // This is sent when an item of the Omnibox popup is selected. The source // is the profile. OMNIBOX_OPENED_URL, @@ -789,8 +812,9 @@ class NotificationType { // Shutdown ---------------------------------------------------------------- - // Sent on the browser IO thread when an URLRequestContext is released by - // its owning Profile. The source is a pointer to the URLRequestContext. + // Sent on the browser IO thread when an net::URLRequestContext is released + // by its owning Profile. The source is a pointer to the + // net::URLRequestContext. URL_REQUEST_CONTEXT_RELEASED, // Sent when WM_ENDSESSION has been received, after the browsers have been @@ -1136,20 +1160,6 @@ class NotificationType { // session data. FOREIGN_SESSION_DISABLED, - // The syncer requires a passphrase to decrypt sensitive updates. This - // notification is sent when the first sensitive data type is setup by the - // user as well as anytime any the passphrase is changed in another synced - // client. The source is the SyncBackendHost wanting a passphrase. The - // details are a boolean: true if the passphrase is required for decryption, - // false if only required for encryption. - SYNC_PASSPHRASE_REQUIRED, - - // Sent when the passphrase provided by the user is accepted. After this - // notification is sent, updates to sensitive nodes are encrypted using the - // accepted passphrase. The source is the SyncBackendHost that accepted - // the passphrase. No details. - SYNC_PASSPHRASE_ACCEPTED, - // Sent when the set of data types that should be synced has been modified // externally (eg. by the dom_ui options screen). // The source is the Profile, there are no details. @@ -1294,6 +1304,9 @@ class NotificationType { // |webkit_glue::PasswordForm|s that were affected. LOGINS_CHANGED, + // Sent when the applications in the NTP app launcher have been reordered. + EXTENSION_LAUNCHER_REORDERED, + // Count (must be last) ---------------------------------------------------- // Used to determine the number of notification types. Not valid as // a type parameter when registering for or posting notifications. diff --git a/chrome/common/pepper_messages.cc b/chrome/common/pepper_messages.cc new file mode 100644 index 0000000..60dad0d --- /dev/null +++ b/chrome/common/pepper_messages.cc @@ -0,0 +1,42 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/common/common_param_traits.h" +#include "ppapi/c/private/ppb_flash.h" + +#define IPC_MESSAGE_IMPL +#include "chrome/common/pepper_messages.h" + +namespace IPC { + +void ParamTraits<PP_Flash_NetAddress>::Write(Message* m, const param_type& p) { + WriteParam(m, p.size); + m->WriteBytes(p.data, static_cast<int>(p.size)); +} + +bool ParamTraits<PP_Flash_NetAddress>::Read(const Message* m, + void** iter, + param_type* p) { + uint16 size; + if (!ReadParam(m, iter, &size)) + return false; + if (size > sizeof(p->data)) + return false; + p->size = size; + + const char* data; + if (!m->ReadBytes(iter, &data, size)) + return false; + memcpy(p->data, data, size); + return true; +} + +void ParamTraits<PP_Flash_NetAddress>::Log(const param_type& p, + std::string* l) { + l->append("<PP_Flash_NetAddress ("); + LogParam(p.size, l); + l->append(" bytes)>"); +} + +} // namespace IPC diff --git a/chrome/common/pepper_messages.h b/chrome/common/pepper_messages.h new file mode 100644 index 0000000..60bf768 --- /dev/null +++ b/chrome/common/pepper_messages.h @@ -0,0 +1,52 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_COMMON_PEPPER_MESSAGES_H_ +#define CHROME_COMMON_PEPPER_MESSAGES_H_ +#pragma once + +#include "chrome/common/common_param_traits.h" +#include "ipc/ipc_message_macros.h" +#include "ipc/ipc_param_traits.h" +#include "ipc/ipc_platform_file.h" + +#define IPC_MESSAGE_START PepperMsgStart + +struct PP_Flash_NetAddress; + +namespace IPC { + +template <> +struct ParamTraits<PP_Flash_NetAddress> { + typedef PP_Flash_NetAddress param_type; + static void Write(Message* m, const param_type& p); + static bool Read(const Message* m, void** iter, param_type* p); + static void Log(const param_type& p, std::string* l); +}; + +} // namespace IPC + +// Pepper (non-file-system) messages sent from the browser to the renderer. + +// The response to PepperMsg_ConnectTcp(Address). +IPC_MESSAGE_ROUTED4(PepperMsg_ConnectTcpACK, + int /* request_id */, + IPC::PlatformFileForTransit /* socket */, + PP_Flash_NetAddress /* local_addr */, + PP_Flash_NetAddress /* remote_addr */) + +// Pepper (non-file-system) messages sent from the renderer to the browser. + +IPC_MESSAGE_CONTROL4(PepperMsg_ConnectTcp, + int /* routing_id */, + int /* request_id */, + std::string /* host */, + uint16 /* port */) + +IPC_MESSAGE_CONTROL3(PepperMsg_ConnectTcpAddress, + int /* routing_id */, + int /* request_id */, + PP_Flash_NetAddress /* addr */) + +#endif // CHROME_COMMON_PEPPER_MESSAGES_H_ diff --git a/chrome/common/pepper_plugin_registry.cc b/chrome/common/pepper_plugin_registry.cc index 343a646..891e75e 100644 --- a/chrome/common/pepper_plugin_registry.cc +++ b/chrome/common/pepper_plugin_registry.cc @@ -15,68 +15,91 @@ #include "chrome/common/chrome_switches.h" #include "remoting/client/plugin/pepper_entrypoints.h" -const char* PepperPluginRegistry::kPDFPluginName = "Chrome PDF Viewer"; -const char* PepperPluginRegistry::kPDFPluginMimeType = "application/pdf"; -const char* PepperPluginRegistry::kPDFPluginExtension = "pdf"; -const char* PepperPluginRegistry::kPDFPluginDescription = - "Portable Document Format"; +namespace { -const char* PepperPluginRegistry::kNaClPluginName = "Chrome NaCl"; -const char* PepperPluginRegistry::kNaClPluginMimeType = - "application/x-ppapi-nacl-srpc"; -const char* PepperPluginRegistry::kNaClPluginExtension = "nexe"; -const char* PepperPluginRegistry::kNaClPluginDescription = - "Native Client Executable"; +const char* kPDFPluginName = "Chrome PDF Viewer"; +const char* kPDFPluginMimeType = "application/pdf"; +const char* kPDFPluginExtension = "pdf"; +const char* kPDFPluginDescription = "Portable Document Format"; +const char* kNaClPluginName = "Chrome NaCl"; +const char* kNaClPluginMimeType = "application/x-nacl"; +const char* kNaClPluginExtension = "nexe"; +const char* kNaClPluginDescription = "Native Client Executable"; -PepperPluginInfo::PepperPluginInfo() - : is_internal(false), - is_out_of_process(false) { -} - -PepperPluginInfo::~PepperPluginInfo() {} +#if defined(ENABLE_REMOTING) +const char* kRemotingPluginMimeType = "pepper-application/x-chromoting"; +#endif -// static -PepperPluginRegistry* PepperPluginRegistry::GetInstance() { - static PepperPluginRegistry* registry = NULL; - // This object leaks. It is a temporary hack to work around a crash. - // http://code.google.com/p/chromium/issues/detail?id=63234 - if (!registry) - registry = new PepperPluginRegistry; - return registry; -} +// Appends the known built-in plugins to the given vector. Some built-in +// plugins are "internal" which means they are compiled into the Chrome binary, +// and some are extra shared libraries distributed with the browser (these are +// not marked internal, aside from being automatically registered, they're just +// regular plugins). +void ComputeBuiltInPlugins(std::vector<PepperPluginInfo>* plugins) { + // PDF. + // + // Once we're sandboxed, we can't know if the PDF plugin is available or not; + // but (on Linux) this function is always called once before we're sandboxed. + // So the first time through test if the file is available and then skip the + // check on subsequent calls if yes. + static bool skip_pdf_file_check = false; + FilePath path; + if (PathService::Get(chrome::FILE_PDF_PLUGIN, &path)) { + if (skip_pdf_file_check || file_util::PathExists(path)) { + PepperPluginInfo pdf; + pdf.path = path; + pdf.name = kPDFPluginName; + pdf.mime_types.push_back(kPDFPluginMimeType); + pdf.file_extensions = kPDFPluginExtension; + pdf.type_descriptions = kPDFPluginDescription; + plugins->push_back(pdf); -// static -void PepperPluginRegistry::GetList(std::vector<PepperPluginInfo>* plugins) { - InternalPluginInfoList internal_plugin_info; - GetInternalPluginInfo(&internal_plugin_info); - for (InternalPluginInfoList::const_iterator it = - internal_plugin_info.begin(); - it != internal_plugin_info.end(); - ++it) { - plugins->push_back(*it); + skip_pdf_file_check = true; + } } - GetPluginInfoFromSwitch(plugins); - GetExtraPlugins(plugins); -} + // Native client. + // + // Verify that we enable nacl on the command line. The name of the switch + // varies between the browser and renderer process. + if (CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableNaCl) && + PathService::Get(chrome::FILE_NACL_PLUGIN, &path) && + file_util::PathExists(path)) { + PepperPluginInfo nacl; + nacl.path = path; + nacl.name = kNaClPluginName; + nacl.mime_types.push_back(kNaClPluginMimeType); + + // TODO(bbudge) Remove this mime type after NaCl tree has been updated. + const char* kNaClPluginOldMimeType = "application/x-ppapi-nacl-srpc"; + nacl.mime_types.push_back(kNaClPluginOldMimeType); + + nacl.file_extensions = kNaClPluginExtension; + nacl.type_descriptions = kNaClPluginDescription; + plugins->push_back(nacl); + } -// static -void PepperPluginRegistry::PreloadModules() { - std::vector<PepperPluginInfo> plugins; - GetList(&plugins); - for (size_t i = 0; i < plugins.size(); ++i) { - if (!plugins[i].is_internal && !plugins[i].is_out_of_process) { - base::NativeLibrary library = base::LoadNativeLibrary(plugins[i].path); - LOG_IF(WARNING, !library) << "Unable to load plugin " - << plugins[i].path.value(); - } + // Remoting. +#if defined(ENABLE_REMOTING) + if (CommandLine::ForCurrentProcess()->HasSwitch( + switches::kEnableRemoting)) { + PepperPluginInfo info; + info.is_internal = true; + info.path = FilePath(FILE_PATH_LITERAL("internal-chromoting")); + info.mime_types.push_back(kRemotingPluginMimeType); + info.internal_entry_points.get_interface = remoting::PPP_GetInterface; + info.internal_entry_points.initialize_module = + remoting::PPP_InitializeModule; + info.internal_entry_points.shutdown_module = remoting::PPP_ShutdownModule; + + plugins->push_back(info); } +#endif } -// static -void PepperPluginRegistry::GetPluginInfoFromSwitch( - std::vector<PepperPluginInfo>* plugins) { +// Appends any plugins from the command line to the given vector. +void ComputePluginsFromCommandLine(std::vector<PepperPluginInfo>* plugins) { const std::string value = CommandLine::ForCurrentProcess()->GetSwitchValueASCII( switches::kRegisterPepperPlugins); @@ -116,8 +139,10 @@ void PepperPluginRegistry::GetPluginInfoFromSwitch( #endif if (name_parts.size() > 1) plugin.name = name_parts[1]; - if (name_parts.size() > 2) + if (name_parts.size() > 2) { + plugin.description = name_parts[2]; plugin.type_descriptions = name_parts[2]; + } for (size_t j = 1; j < parts.size(); ++j) plugin.mime_types.push_back(parts[j]); @@ -125,102 +150,56 @@ void PepperPluginRegistry::GetPluginInfoFromSwitch( } } -// static -void PepperPluginRegistry::GetExtraPlugins( - std::vector<PepperPluginInfo>* plugins) { - // Once we're sandboxed, we can't know if the PDF plugin is - // available or not; but (on Linux) this function is always called - // once before we're sandboxed. So the first time through test if - // the file is available and then skip the check on subsequent calls - // if yes. - static bool skip_pdf_file_check = false; - FilePath path; - if (PathService::Get(chrome::FILE_PDF_PLUGIN, &path)) { - if (skip_pdf_file_check || file_util::PathExists(path)) { - PepperPluginInfo pdf; - pdf.path = path; - pdf.name = kPDFPluginName; - pdf.mime_types.push_back(kPDFPluginMimeType); - pdf.file_extensions = kPDFPluginExtension; - pdf.type_descriptions = kPDFPluginDescription; - plugins->push_back(pdf); +} // namespace - skip_pdf_file_check = true; - } - } +const char* PepperPluginRegistry::kPDFPluginName = ::kPDFPluginName; - // Verify that we enable nacl on the command line. The name of the - // switch varies between the browser and renderer process. - bool enable_nacl = - CommandLine::ForCurrentProcess()->HasSwitch(switches::kEnableNaCl) || - CommandLine::ForCurrentProcess()->HasSwitch(switches::kInternalNaCl); - - static bool skip_nacl_file_check = false; - if (enable_nacl && PathService::Get(chrome::FILE_NACL_PLUGIN, &path)) { - if (skip_nacl_file_check || file_util::PathExists(path)) { - PepperPluginInfo nacl; - nacl.path = path; - nacl.name = kNaClPluginName; - nacl.mime_types.push_back(kNaClPluginMimeType); - nacl.file_extensions = kNaClPluginExtension; - nacl.type_descriptions = kNaClPluginDescription; - plugins->push_back(nacl); - - skip_nacl_file_check = true; - } - } +PepperPluginInfo::PepperPluginInfo() + : is_internal(false), + is_out_of_process(false) { } -PepperPluginRegistry::InternalPluginInfo::InternalPluginInfo() { - is_internal = true; +PepperPluginInfo::~PepperPluginInfo() {} + +// static +PepperPluginRegistry* PepperPluginRegistry::GetInstance() { + static PepperPluginRegistry* registry = NULL; + // This object leaks. It is a temporary hack to work around a crash. + // http://code.google.com/p/chromium/issues/detail?id=63234 + if (!registry) + registry = new PepperPluginRegistry; + return registry; } // static -void PepperPluginRegistry::GetInternalPluginInfo( - InternalPluginInfoList* plugin_info) { - // Currently, to centralize the internal plugin registration logic, we - // hardcode the list of plugins, mimetypes, and registration information - // in this function. This is gross, but because the GetList() function is - // called from both the renderer and browser the other option is to force a - // special register function for each plugin to be called by both - // RendererMain() and BrowserMain(). This seemed like the better tradeoff. - // - // TODO(ajwong): Think up a better way to maintain the plugin registration - // information. Perhaps by construction of a singly linked list of - // plugin initializers that is built with static initializers? +void PepperPluginRegistry::ComputeList(std::vector<PepperPluginInfo>* plugins) { + ComputeBuiltInPlugins(plugins); + ComputePluginsFromCommandLine(plugins); +} -#if defined(ENABLE_REMOTING) - if (CommandLine::ForCurrentProcess()->HasSwitch( - switches::kEnableRemoting)) { - InternalPluginInfo info; - // Add the chromoting plugin. - DCHECK(info.is_internal); - info.path = - FilePath(FILE_PATH_LITERAL("internal-chromoting")); - info.mime_types.push_back("pepper-application/x-chromoting"); - info.entry_points.get_interface = remoting::PPP_GetInterface; - info.entry_points.initialize_module = remoting::PPP_InitializeModule; - info.entry_points.shutdown_module = remoting::PPP_ShutdownModule; - - plugin_info->push_back(info); +// static +void PepperPluginRegistry::PreloadModules() { + std::vector<PepperPluginInfo> plugins; + ComputeList(&plugins); + for (size_t i = 0; i < plugins.size(); ++i) { + if (!plugins[i].is_internal && !plugins[i].is_out_of_process) { + base::NativeLibrary library = base::LoadNativeLibrary(plugins[i].path); + LOG_IF(WARNING, !library) << "Unable to load plugin " + << plugins[i].path.value(); + } } -#endif } -bool PepperPluginRegistry::RunOutOfProcessForPlugin( +const PepperPluginInfo* PepperPluginRegistry::GetInfoForPlugin( const FilePath& path) const { - // TODO(brettw) don't recompute this every time. But since this Pepper - // switch is only for development, it's OK for now. - std::vector<PepperPluginInfo> plugins; - GetList(&plugins); - for (size_t i = 0; i < plugins.size(); ++i) { - if (path == plugins[i].path) - return plugins[i].is_out_of_process; + for (size_t i = 0; i < plugin_list_.size(); ++i) { + if (path == plugin_list_[i].path) + return &plugin_list_[i]; } - return false; + return NULL; } -webkit::ppapi::PluginModule* PepperPluginRegistry::GetModule( +webkit::ppapi::PluginModule* PepperPluginRegistry::GetLiveModule( const FilePath& path) { NonOwningModuleMap::iterator it = live_modules_.find(path); if (it == live_modules_.end()) @@ -258,44 +237,32 @@ PepperPluginRegistry::~PepperPluginRegistry() { } PepperPluginRegistry::PepperPluginRegistry() { - InternalPluginInfoList internal_plugin_info; - GetInternalPluginInfo(&internal_plugin_info); - - // Register modules for these suckers. - for (InternalPluginInfoList::const_iterator it = - internal_plugin_info.begin(); - it != internal_plugin_info.end(); - ++it) { - const FilePath& path = it->path; - scoped_refptr<webkit::ppapi::PluginModule> module( - new webkit::ppapi::PluginModule(this)); - if (!module->InitAsInternalPlugin(it->entry_points)) { - DLOG(ERROR) << "Failed to load pepper module: " << path.value(); - continue; - } - module->set_name(it->name); - preloaded_modules_[path] = module; - AddLiveModule(path, module); - } - - // Add the modules specified on the command line last so that they can - // override the internal plugins. - std::vector<PepperPluginInfo> plugins; - GetPluginInfoFromSwitch(&plugins); - GetExtraPlugins(&plugins); - for (size_t i = 0; i < plugins.size(); ++i) { - if (plugins[i].is_out_of_process) - continue; // Only preload in-process plugins. - - const FilePath& path = plugins[i].path; - scoped_refptr<webkit::ppapi::PluginModule> module( - new webkit::ppapi::PluginModule(this)); - if (!module->InitAsLibrary(path)) { - DLOG(ERROR) << "Failed to load pepper module: " << path.value(); - continue; + ComputeList(&plugin_list_); + + // Note that in each case, AddLiveModule must be called before completing + // initialization. If we bail out (in the continue clauses) before saving + // the initialized module, it will still try to unregister itself in its + // destructor. + for (size_t i = 0; i < plugin_list_.size(); i++) { + const PepperPluginInfo& current = plugin_list_[i]; + if (current.is_out_of_process) + continue; // Out of process plugins need no special pre-initialization. + + scoped_refptr<webkit::ppapi::PluginModule> module = + new webkit::ppapi::PluginModule(current.name, this); + AddLiveModule(current.path, module); + if (current.is_internal) { + if (!module->InitAsInternalPlugin(current.internal_entry_points)) { + DLOG(ERROR) << "Failed to load pepper module: " << current.path.value(); + continue; + } + } else { + // Preload all external plugins we're not running out of process. + if (!module->InitAsLibrary(current.path)) { + DLOG(ERROR) << "Failed to load pepper module: " << current.path.value(); + continue; + } } - module->set_name(plugins[i].name); - preloaded_modules_[path] = module; - AddLiveModule(path, module); + preloaded_modules_[current.path] = module; } } diff --git a/chrome/common/pepper_plugin_registry.h b/chrome/common/pepper_plugin_registry.h index 0dd8b15..18233ea 100644 --- a/chrome/common/pepper_plugin_registry.h +++ b/chrome/common/pepper_plugin_registry.h @@ -19,6 +19,8 @@ struct PepperPluginInfo { ~PepperPluginInfo(); // Indicates internal plugins for which there's not actually a library. + // These plugins are implemented in the Chrome binary using a separate set + // of entry points (see internal_entry_points below). // Defaults to false. bool is_internal; @@ -31,6 +33,10 @@ struct PepperPluginInfo { std::string description; std::string file_extensions; std::string type_descriptions; + + // When is_internal is set, this contains the function pointers to the + // entry points for the internal plugins. + webkit::ppapi::PluginModule::EntryPoints internal_entry_points; }; // This class holds references to all of the known pepper plugin modules. @@ -44,35 +50,32 @@ class PepperPluginRegistry ~PepperPluginRegistry(); static const char* kPDFPluginName; - static const char* kPDFPluginMimeType; - static const char* kPDFPluginExtension; - static const char* kPDFPluginDescription; - - static const char* kNaClPluginName; - static const char* kNaClPluginMimeType; - static const char* kNaClPluginExtension; - static const char* kNaClPluginDescription; static PepperPluginRegistry* GetInstance(); - // Returns the list of known pepper plugins. This method is static so that - // it can be used by the browser process, which has no need to load the - // pepper plugin modules. - static void GetList(std::vector<PepperPluginInfo>* plugins); + // Computes the list of known pepper plugins. + // + // This method is static so that it can be used by the browser process, which + // has no need to load the pepper plugin modules. It will re-compute the + // plugin list every time it is called. Generally, code in the registry should + // be using the cached plugin_list_ instead. + static void ComputeList(std::vector<PepperPluginInfo>* plugins); // Loads the (native) libraries but does not initialize them (i.e., does not // call PPP_InitializeModule). This is needed by the zygote on Linux to get // access to the plugins before entering the sandbox. static void PreloadModules(); - // Returns true if the given plugin is a pepper plugin that should be run - // out of process. - bool RunOutOfProcessForPlugin(const FilePath& path) const; + // Retrieves the information associated with the given plugin path. The + // return value will be NULL if there is no such plugin. + // + // The returned pointer is owned by the PluginRegistry. + const PepperPluginInfo* GetInfoForPlugin(const FilePath& path) const; // Returns an existing loaded module for the given path. It will search for // both preloaded in-process or currently active out-of-process plugins // matching the given name. Returns NULL if the plugin hasn't been loaded. - webkit::ppapi::PluginModule* GetModule(const FilePath& path); + webkit::ppapi::PluginModule* GetLiveModule(const FilePath& path); // Notifies the registry that a new non-preloaded module has been created. // This is normally called for out-of-process plugins. Once this is called, @@ -85,18 +88,13 @@ class PepperPluginRegistry webkit::ppapi::PluginModule* destroyed_module); private: - static void GetPluginInfoFromSwitch(std::vector<PepperPluginInfo>* plugins); - static void GetExtraPlugins(std::vector<PepperPluginInfo>* plugins); - - struct InternalPluginInfo : public PepperPluginInfo { - InternalPluginInfo(); // Sets |is_internal|. - webkit::ppapi::PluginModule::EntryPoints entry_points; - }; - typedef std::vector<InternalPluginInfo> InternalPluginInfoList; - static void GetInternalPluginInfo(InternalPluginInfoList* plugin_info); - PepperPluginRegistry(); + // All known pepper plugins. + std::vector<PepperPluginInfo> plugin_list_; + + // Plugins that have been preloaded so they can be executed in-process in + // the renderer (the sandbox prevents on-demand loading). typedef std::map<FilePath, scoped_refptr<webkit::ppapi::PluginModule> > OwningModuleMap; OwningModuleMap preloaded_modules_; diff --git a/chrome/common/persistent_pref_store.h b/chrome/common/persistent_pref_store.h index 9e2fb0a..e0eb8dc 100644 --- a/chrome/common/persistent_pref_store.h +++ b/chrome/common/persistent_pref_store.h @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -11,7 +11,7 @@ #include <chrome/common/pref_store.h> // This interface is complementary to the PrefStore interface, declaring -// additional functionatliy that adds support for setting values and persisting +// additional functionality that adds support for setting values and persisting // the data to some backing store. class PersistentPrefStore : public PrefStore { public: diff --git a/chrome/common/plugin_messages.cc b/chrome/common/plugin_messages.cc index d9117ff..26d2aec 100644 --- a/chrome/common/plugin_messages.cc +++ b/chrome/common/plugin_messages.cc @@ -57,8 +57,8 @@ NPVariant_Param::~NPVariant_Param() { PluginMsg_UpdateGeometry_Param::PluginMsg_UpdateGeometry_Param() : transparent(false), #if !defined(OS_MACOSX) - windowless_buffer(NULL), - background_buffer(NULL) + windowless_buffer(TransportDIB::DefaultHandleValue()), + background_buffer(TransportDIB::DefaultHandleValue()) #else ack_key(-1) #endif // !defined(OS_MACOSX) diff --git a/chrome/common/plugin_messages.h b/chrome/common/plugin_messages.h index 4753c9d..721312d 100644 --- a/chrome/common/plugin_messages.h +++ b/chrome/common/plugin_messages.h @@ -18,13 +18,13 @@ #include "base/string_number_conversions.h" #include "chrome/common/common_param_traits.h" #include "chrome/common/webkit_param_traits.h" -#include "gfx/native_widget_types.h" -#include "gfx/rect.h" #include "googleurl/src/gurl.h" #include "ipc/ipc_message_utils.h" #include "third_party/npapi/bindings/npapi.h" -#include "third_party/WebKit/WebKit/chromium/public/WebBindings.h" -#include "third_party/WebKit/WebKit/chromium/public/WebInputEvent.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebBindings.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h" +#include "ui/gfx/native_widget_types.h" +#include "ui/gfx/rect.h" #include "webkit/glue/npruntime_util.h" // Name prefix of the event handle when a message box is displayed. diff --git a/chrome/common/plugin_messages_internal.h b/chrome/common/plugin_messages_internal.h index 54ba2eb..98ed543 100644 --- a/chrome/common/plugin_messages_internal.h +++ b/chrome/common/plugin_messages_internal.h @@ -4,8 +4,8 @@ #include "base/shared_memory.h" #include "build/build_config.h" -#include "gfx/native_widget_types.h" #include "ipc/ipc_message_macros.h" +#include "ui/gfx/native_widget_types.h" #include "webkit/glue/webcursor.h" #if defined(OS_POSIX) @@ -234,7 +234,7 @@ IPC_MESSAGE_ROUTED2(PluginMsg_WindowFrameChanged, gfx::Rect /* window_frame */, gfx::Rect /* view_frame */) -IPC_MESSAGE_ROUTED1(PluginMsg_ImeCompositionConfirmed, +IPC_MESSAGE_ROUTED1(PluginMsg_ImeCompositionCompleted, string16 /* text */) #endif @@ -305,8 +305,8 @@ IPC_MESSAGE_ROUTED1(PluginMsg_SetFakeAcceleratedSurfaceWindowHandle, #endif IPC_MESSAGE_CONTROL3(PluginMsg_ClearSiteData, + std::string, /* site */ uint64, /* flags */ - std::string, /* domain */ base::Time /* begin_time */) @@ -403,8 +403,10 @@ IPC_MESSAGE_CONTROL0(PluginHostMsg_PluginShuttingDown) IPC_MESSAGE_ROUTED1(PluginHostMsg_UpdateGeometry_ACK, int /* ack_key */) -IPC_MESSAGE_ROUTED1(PluginHostMsg_SetImeEnabled, - bool /* enabled */) +IPC_MESSAGE_ROUTED1(PluginHostMsg_FocusChanged, + bool /* focused */) + +IPC_MESSAGE_ROUTED0(PluginHostMsg_StartIme) // This message, used in Mac OS X 10.5 and earlier, is sent from the plug-in // process to the renderer process to indicate that the plug-in allocated a diff --git a/chrome/common/policy_constants.cc b/chrome/common/policy_constants.cc deleted file mode 100644 index 8ed8934..0000000 --- a/chrome/common/policy_constants.cc +++ /dev/null @@ -1,92 +0,0 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "chrome/common/policy_constants.h" - -namespace policy { - -#if defined(OS_WIN) -#if defined(GOOGLE_CHROME_BUILD) -const wchar_t kRegistrySubKey[] = L"SOFTWARE\\Policies\\Google\\Chrome"; -#else -const wchar_t kRegistrySubKey[] = L"SOFTWARE\\Policies\\Chromium"; -#endif -#endif - -namespace key { - -const char kHomepageLocation[] = "HomepageLocation"; -const char kHomepageIsNewTabPage[] = "HomepageIsNewTabPage"; -const char kRestoreOnStartup[] = "RestoreOnStartup"; -const char kURLsToRestoreOnStartup[] = "RestoreOnStartupURLs"; -const char kDefaultSearchProviderEnabled[] = "DefaultSearchProviderEnabled"; -const char kDefaultSearchProviderName[] = "DefaultSearchProviderName"; -const char kDefaultSearchProviderKeyword[] = "DefaultSearchProviderKeyword"; -const char kDefaultSearchProviderSearchURL[] = - "DefaultSearchProviderSearchURL"; -const char kDefaultSearchProviderSuggestURL[] = - "DefaultSearchProviderSuggestURL"; -const char kDefaultSearchProviderIconURL[] = - "DefaultSearchProviderIconURL"; -const char kDefaultSearchProviderEncodings[] = - "DefaultSearchProviderEncodings"; -const char kDisableSpdy[] = "DisableSpdy"; -// We consider the name ProxyMode more apt than ProxyServerMode but could -// not change it after publishing that name for the win registry and policy -// config files. -const char kProxyMode[] = "ProxyServerMode"; -const char kProxyServer[] = "ProxyServer"; -const char kProxyPacUrl[] = "ProxyPacUrl"; -const char kProxyBypassList[] = "ProxyBypassList"; -const char kAlternateErrorPagesEnabled[] = "AlternateErrorPagesEnabled"; -const char kSearchSuggestEnabled[] = "SearchSuggestEnabled"; -const char kDnsPrefetchingEnabled[] = "DnsPrefetchingEnabled"; -const char kSafeBrowsingEnabled[] = "SafeBrowsingEnabled"; -const char kMetricsReportingEnabled[] = "MetricsReportingEnabled"; -const char kPasswordManagerEnabled[] = "PasswordManagerEnabled"; -const char kPasswordManagerAllowShowPasswords[] = - "PasswordManagerAllowShowPasswords"; -const char kDisabledPlugins[] = "DisabledPlugins"; -const char kAutoFillEnabled[] = "AutoFillEnabled"; -const char kApplicationLocaleValue[] = "ApplicationLocaleValue"; -const char kSyncDisabled[] = "SyncDisabled"; -const char kExtensionInstallAllowList[] = "ExtensionInstallWhitelist"; -const char kExtensionInstallDenyList[] = "ExtensionInstallBlacklist"; -const char kExtensionInstallForceList[] = "ExtensionInstallForcelist"; -const char kShowHomeButton[] = "ShowHomeButton"; -const char kPrintingEnabled[] = "PrintingEnabled"; -const char kJavascriptEnabled[] = "JavascriptEnabled"; -const char kSavingBrowserHistoryDisabled[] = "SavingBrowserHistoryDisabled"; -const char kDeveloperToolsDisabled[] = "DeveloperToolsDisabled"; -const char kBlockThirdPartyCookies[] = "BlockThirdPartyCookies"; -const char kDefaultCookiesSetting[] = "DefaultCookiesSetting"; -const char kDefaultImagesSetting[] = "DefaultImagesSetting"; -const char kDefaultJavaScriptSetting[] = "DefaultJavaScriptSetting"; -const char kDefaultPluginsSetting[] = "DefaultPluginsSetting"; -const char kDefaultPopupsSetting[] = "DefaultPopupsSetting"; -const char kDefaultNotificationSetting[] = "DefaultNotificationSetting"; -const char kDefaultGeolocationSetting[] = "DefaultGeolocationSetting"; -const char kAuthSchemes[] = "AuthSchemes"; -const char kDisableAuthNegotiateCnameLookup[] = - "DisableAuthNegotiateCnameLookup"; -const char kEnableAuthNegotiatePort[] = "EnableAuthNegotiatePort"; -const char kAuthServerWhitelist[] = "AuthServerWhitelist"; -const char kAuthNegotiateDelegateWhitelist[] = "AuthNegotiateDelegateWhitelist"; -const char kGSSAPILibraryName[] = "GSSAPILibraryName"; -const char kDisable3DAPIs[] = "Disable3DAPIs"; - -// Chrome Frame specific policy constants -const char kChromeFrameRendererSettings[] = "ChromeFrameRendererSettings"; -const char kRenderInChromeFrameList[] = "RenderInChromeFrameList"; -const char kRenderInHostList[] = "RenderInHostList"; -const char kChromeFrameContentTypes[] = "ChromeFrameContentTypes"; - -#if defined(OS_CHROMEOS) -// ChromeOS policy constants -const char kChromeOsLockOnIdleSuspend[] = "ChromeOsLockOnIdleSuspend"; -#endif - -} // namespace key - -} // namespace policy diff --git a/chrome/common/policy_constants.h b/chrome/common/policy_constants.h deleted file mode 100644 index 279197e..0000000 --- a/chrome/common/policy_constants.h +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef CHROME_COMMON_POLICY_CONSTANTS_H_ -#define CHROME_COMMON_POLICY_CONSTANTS_H_ -#pragma once - -#include "build/build_config.h" - -namespace policy { - -#if defined(OS_WIN) -// The windows registry path we read the policy configuration from. -extern const wchar_t kRegistrySubKey[]; -#endif - -// Key names for the policy settings. -namespace key { - -extern const char kHomepageLocation[]; -extern const char kHomepageIsNewTabPage[]; -extern const char kRestoreOnStartup[]; -extern const char kURLsToRestoreOnStartup[]; -extern const char kDefaultSearchProviderEnabled[]; -extern const char kDefaultSearchProviderName[]; -extern const char kDefaultSearchProviderKeyword[]; -extern const char kDefaultSearchProviderSearchURL[]; -extern const char kDefaultSearchProviderSuggestURL[]; -extern const char kDefaultSearchProviderIconURL[]; -extern const char kDefaultSearchProviderEncodings[]; -extern const char kDisableSpdy[]; -extern const char kProxyMode[]; -extern const char kProxyServer[]; -extern const char kProxyPacUrl[]; -extern const char kProxyBypassList[]; -extern const char kAlternateErrorPagesEnabled[]; -extern const char kSearchSuggestEnabled[]; -extern const char kDnsPrefetchingEnabled[]; -extern const char kSafeBrowsingEnabled[]; -extern const char kMetricsReportingEnabled[]; -extern const char kPasswordManagerEnabled[]; -extern const char kPasswordManagerAllowShowPasswords[]; -extern const char kDisabledPlugins[]; -extern const char kAutoFillEnabled[]; -extern const char kApplicationLocaleValue[]; -extern const char kSyncDisabled[]; -extern const char kExtensionInstallAllowList[]; -extern const char kExtensionInstallDenyList[]; -extern const char kExtensionInstallForceList[]; -extern const char kShowHomeButton[]; -extern const char kPrintingEnabled[]; -extern const char kJavascriptEnabled[]; -extern const char kSavingBrowserHistoryDisabled[]; -extern const char kDeveloperToolsDisabled[]; -extern const char kBlockThirdPartyCookies[]; -extern const char kDefaultCookiesSetting[]; -extern const char kDefaultImagesSetting[]; -extern const char kDefaultJavaScriptSetting[]; -extern const char kDefaultPluginsSetting[]; -extern const char kDefaultPopupsSetting[]; -extern const char kDefaultNotificationSetting[]; -extern const char kDefaultGeolocationSetting[]; -extern const char kAuthSchemes[]; -extern const char kDisableAuthNegotiateCnameLookup[]; -extern const char kEnableAuthNegotiatePort[]; -extern const char kAuthServerWhitelist[]; -extern const char kAuthNegotiateDelegateWhitelist[]; -extern const char kGSSAPILibraryName[]; -extern const char kDisable3DAPIs[]; - -// Chrome Frame specific policy constants -extern const char kChromeFrameRendererSettings[]; -extern const char kRenderInChromeFrameList[]; -extern const char kRenderInHostList[]; -extern const char kChromeFrameContentTypes[]; - -#if defined(OS_CHROMEOS) -// ChromeOS policy constants -extern const char kChromeOsLockOnIdleSuspend[]; -#endif - -} // namespace key - -} // namespace policy - -#endif // CHROME_COMMON_POLICY_CONSTANTS_H_ diff --git a/chrome/common/pref_names.cc b/chrome/common/pref_names.cc index 502afd9..f3ddcc3 100644 --- a/chrome/common/pref_names.cc +++ b/chrome/common/pref_names.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -46,8 +46,38 @@ const char kURLsToRestoreOnStartup[] = "session.urls_to_restore_on_startup"; // while user's profile determines his personal locale preference. const char kApplicationLocale[] = "intl.app_locale"; #if defined(OS_CHROMEOS) -// Non-syncable item. Used for two-step initialization of locale in ChromeOS -// because synchronization of kApplicationLocale is not instant. +// Locale preference of device' owner. ChromeOS device appears in this locale +// after startup/wakeup/signout. +const char kOwnerLocale[] = "intl.owner_locale"; +// Locale accepted by user. Non-syncable. +// Used to determine whether we need to show Locale Change notification. +const char kApplicationLocaleAccepted[] = "intl.app_locale_accepted"; +// Non-syncable item. +// It is used in two distinct ways. +// (1) Used for two-step initialization of locale in ChromeOS +// because synchronization of kApplicationLocale is not instant. +// (2) Used to detect locale change. Locale change is detected by +// LocaleChangeGuard in case values of kApplicationLocaleBackup and +// kApplicationLocale are both non-empty and differ. +// Following is a table showing how state of those prefs may change upon +// common real-life use cases: +// AppLocale Backup Accepted +// Initial login - A - +// Sync B A - +// Accept (B) B B B +// ----------------------------------------------------------- +// Initial login - A - +// No sync and second login A A - +// Change options B B - +// ----------------------------------------------------------- +// Initial login - A - +// Sync A A - +// Locale changed on login screen A C - +// Accept (A) A A A +// ----------------------------------------------------------- +// Initial login - A - +// Sync B A - +// Revert A A - const char kApplicationLocaleBackup[] = "intl.app_locale_backup"; #endif @@ -131,6 +161,9 @@ const char kSafeBrowsingEnabled[] = "safebrowsing.enabled"; const char kSafeBrowsingReportingEnabled[] = "safebrowsing.reporting_enabled"; +// Boolean that is true when Incognito support is enabled. +const char kIncognitoEnabled[] = "incognito.enabled"; + // Boolean that is true when Suggest support is enabled. const char kSearchSuggestEnabled[] = "search.suggest_enabled"; @@ -245,11 +278,13 @@ const char kInstantPromo[] = "instant.promo"; // Used to migrate preferences from local state to user preferences to // enable multiple profiles. -// Holds possible values: -// 0: no preferences migrated yet. -// 1: dns prefetching preferences stored in user preferences. +// BITMASK with possible values (see browser_prefs.cc for enum): +// 0: No preferences migrated. +// 1: DNS preferences migrated: kDnsPrefetchingStartupList and HostReferralList +// 2: Browser window preferences migrated: kDevToolsSplitLocation and +// kBrowserWindowPlacement const char kMultipleProfilePrefMigration[] = - "profile.multiple_profile_prefs_version"; + "local_state.multiple_profile_prefs_version"; #if defined(USE_NSS) || defined(USE_OPENSSL) // Prefs for SSLConfigServicePref. Currently, these are only present on @@ -260,6 +295,12 @@ const char kTLS1Enabled[] = "ssl.tls1.enabled"; #endif #if defined(OS_CHROMEOS) +// An integer pref to initially mute volume if 1. +const char kAudioMute[] = "settings.audio.mute"; + +// A double pref to set initial volume. +const char kAudioVolume[] = "settings.audio.volume"; + // A boolean pref set to true if TapToClick is being done in browser. const char kTapToClickEnabled[] = "settings.touchpad.enable_tap_to_click"; @@ -467,7 +508,6 @@ const char kDeleteCache[] = "browser.clear_data.cache"; const char kDeleteCookies[] = "browser.clear_data.cookies"; const char kDeletePasswords[] = "browser.clear_data.passwords"; const char kDeleteFormData[] = "browser.clear_data.form_data"; -const char kDeleteLSOData[] = "browser.clear_data.lso_data"; const char kDeleteTimePeriod[] = "browser.clear_data.time_period"; // Whether there is a Flash version installed that supports clearing LSO data. @@ -528,10 +568,21 @@ const char kPluginsPluginsBlacklist[] = "plugins.plugins_blacklist"; // enable it by default, we'll want to do so only once. const char kPluginsEnabledInternalPDF[] = "plugins.enabled_internal_pdf3"; +const char kPluginsShowSetReaderDefaultInfobar[] = + "plugins.show_set_reader_default"; + +// Whether about:plugins is shown in the details mode or not. +const char kPluginsShowDetails[] = "plugins.show_details"; + // Boolean that indicates whether we should check if we are the default browser // on start-up. const char kCheckDefaultBrowser[] = "browser.check_default_browser"; +// Policy setting whether default browser check should be disabled and default +// browser registration should take place. +const char kDefaultBrowserSettingEnabled[] = + "browser.default_browser_setting_enabled"; + #if defined(OS_MACOSX) // Boolean that indicates whether the application should show the info bar // asking the user to set up automatic updates when Keystone promotion is @@ -587,11 +638,6 @@ const char kBlockNonsandboxedPlugins[] = "profile.block_nonsandboxed_plugins"; // storage, etc..) should be deleted on exit. const char kClearSiteDataOnExit[] = "profile.clear_site_data_on_exit"; -// Boolean that is true when plug-in locally stored data ("Flash cookies") -// should be deleted on exit. -const char kClearPluginLSODataOnExit[] = - "profile.clear_plugin_lso_data_on_exit"; - // Double that indicates the default zoom level. const char kDefaultZoomLevel[] = "profile.default_zoom_level"; @@ -628,6 +674,11 @@ const char kEnableTranslate[] = "translate.enabled"; const char kPinnedTabs[] = "pinned_tabs"; +// Integer that specifies the policy refresh rate in milliseconds. Not all +// values are meaningful, so it is clamped to a sane range by the policy +// provider. +const char kPolicyRefreshRate[] = "policy.refresh_rate"; + // Integer containing the default Geolocation content setting. const char kGeolocationDefaultContentSetting[] = "geolocation.default_content_setting"; @@ -743,6 +794,20 @@ const char kStabilityRendererHangCount[] = const char kStabilityChildProcessCrashCount[] = "user_experience_metrics.stability.child_process_crash_count"; +// On Chrome OS, total number of non-Chrome user process crashes +// since the last report. +const char kStabilityOtherUserCrashCount[] = + "user_experience_metrics.stability.other_user_crash_count"; + +// On Chrome OS, total number of kernel crashes since the last report. +const char kStabilityKernelCrashCount[] = + "user_experience_metrics.stability.kernel_crash_count"; + +// On Chrome OS, total number of unclean system shutdowns since the +// last report. +const char kStabilitySystemUncleanShutdownCount[] = + "user_experience_metrics.stability.system_unclean_shutdowns"; + // Number of times the browser has been able to register crash reporting. const char kStabilityBreakpadRegistrationSuccess[] = "user_experience_metrics.stability.breakpad_registration_ok"; @@ -810,6 +875,10 @@ const char kDownloadDirUpgraded[] = "download.directory_upgrade"; // String which specifies where to save html files to by default. const char kSaveFileDefaultDirectory[] = "savefile.default_directory"; +// The type used to save the page. See the enum SavePackage::SavePackageType in +// the chrome/browser/download/save_package.h for the possible values. +const char kSaveFileType[] = "savefile.type"; + // String which specifies the last directory that was chosen for uploading // or opening a file. const char kSelectFileLastDirectory[] = "selectfile.last_directory"; @@ -996,16 +1065,27 @@ const char kNTPPrefVersion[] = "ntp.pref_version"; const char kNTPCustomLogoStart[] = "ntp.alt_logo_start"; const char kNTPCustomLogoEnd[] = "ntp.alt_logo_end"; -// Dates between which the NTP should show a promotional line downloaded -// from the promo server. -const char kNTPPromoStart[] = "ntp.promo_start"; -const char kNTPPromoEnd[] = "ntp.promo_end"; +// Whether promo should be shown to Dev builds, Beta and Dev, or all builds. +const char kNTPPromoBuild[] = "ntp.promo_build"; + +// True if user has explicitly closed the promo line. +const char kNTPPromoClosed[] = "ntp.promo_closed"; + +// Users are randomly divided into 16 groups in order to slowly roll out +// special promos. +const char kNTPPromoGroup[] = "ntp.promo_group"; + +// Amount of time each promo group should be shown a promo that is being slowly +// rolled out, in hours. +const char kNTPPromoGroupTimeSlice[] = "ntp.promo_group_timeslice"; // Promo line from server. const char kNTPPromoLine[] = "ntp.promo_line"; -// True if user has explicitly closed the promo line. -const char kNTPPromoClosed[] = "ntp.promo_closed"; +// Dates between which the NTP should show a promotional line downloaded +// from the promo server. +const char kNTPPromoStart[] = "ntp.promo_start"; +const char kNTPPromoEnd[] = "ntp.promo_end"; const char kDevToolsDisabled[] = "devtools.disabled"; @@ -1116,6 +1196,10 @@ const char kGSSAPILibraryName[] = "auth.gssapi_library_name"; // Dictionary for transient storage of settings that should go into signed // settings storage before owner has been assigned. const char kSignedSettingsTempStorage[] = "signed_settings_temp_storage"; + +// The hardware keyboard layout of the device. This should look like +// "xkb:us::eng". +const char kHardwareKeyboardLayout[] = "intl.hardware_keyboard"; #endif // *************** SERVICE PREFS *************** @@ -1139,18 +1223,8 @@ const char kCloudPrintPrintSystemSettings[] = // Used by the service process to determine if the remoting host is enabled. const char kRemotingHostEnabled[] = "remoting.host_enabled"; -// Integer to specify the type of proxy settings. -// See ProxyPrefs for possible values and interactions with the other proxy -// preferences. -const char kProxyMode[] = "proxy.mode"; -// String specifying the proxy server. For a specification of the expected -// syntax see net::ProxyConfig::ProxyRules::ParseFromString(). -const char kProxyServer[] = "proxy.server"; -// URL to the proxy .pac file. -const char kProxyPacUrl[] = "proxy.pac_url"; -// String containing proxy bypass rules. For a specification of the -// expected syntax see net::ProxyBypassRules::ParseFromString(). -const char kProxyBypassList[] = "proxy.bypass_list"; +// Preference to story proxy settings. +const char kProxy[] = "proxy"; // Preferences that are exclusivly used to store managed values for default // content settings. diff --git a/chrome/common/pref_names.h b/chrome/common/pref_names.h index 29766a1..8fe066d 100644 --- a/chrome/common/pref_names.h +++ b/chrome/common/pref_names.h @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -27,6 +27,8 @@ extern const char kURLsToRestoreOnStartup[]; extern const char kApplicationLocale[]; #if defined(OS_CHROMEOS) extern const char kApplicationLocaleBackup[]; +extern const char kApplicationLocaleAccepted[]; +extern const char kOwnerLocale[]; #endif extern const char kDefaultCharset[]; @@ -61,6 +63,7 @@ extern const char kPasswordManagerAllowShowPasswords[]; extern const char kFormAutofillEnabled[]; // OBSOLETE extern const char kSafeBrowsingEnabled[]; extern const char kSafeBrowsingReportingEnabled[]; +extern const char kIncognitoEnabled[]; extern const char kSearchSuggestEnabled[]; extern const char kCookieBehavior[]; // OBSOLETE extern const char kDefaultSearchProviderEnabled[]; @@ -96,6 +99,8 @@ extern const char kSSL3Enabled[]; extern const char kTLS1Enabled[]; #endif #if defined(OS_CHROMEOS) +extern const char kAudioMute[]; +extern const char kAudioVolume[]; extern const char kTapToClickEnabled[]; extern const char kTouchpadSensitivity[]; extern const char kLanguageCurrentInputMethod[]; @@ -173,7 +178,6 @@ extern const char kDeleteCache[]; extern const char kDeleteCookies[]; extern const char kDeletePasswords[]; extern const char kDeleteFormData[]; -extern const char kDeleteLSOData[]; extern const char kClearPluginLSODataEnabled[]; extern const char kEnableSpellCheck[]; extern const char kEnabledLabsExperiments[]; @@ -202,7 +206,10 @@ extern const char kPluginsLastInternalDirectory[]; extern const char kPluginsPluginsList[]; extern const char kPluginsPluginsBlacklist[]; extern const char kPluginsEnabledInternalPDF[]; +extern const char kPluginsShowSetReaderDefaultInfobar[]; +extern const char kPluginsShowDetails[]; extern const char kCheckDefaultBrowser[]; +extern const char kDefaultBrowserSettingEnabled[]; #if defined(OS_MACOSX) extern const char kShowUpdatePromotionInfoBar[]; #endif @@ -219,7 +226,6 @@ extern const char kContentSettingsPatterns[]; extern const char kBlockThirdPartyCookies[]; extern const char kBlockNonsandboxedPlugins[]; extern const char kClearSiteDataOnExit[]; -extern const char kClearPluginLSODataOnExit[]; extern const char kDefaultZoomLevel[]; extern const char kPerHostZoomLevels[]; extern const char kAutoFillEnabled[]; @@ -232,6 +238,7 @@ extern const char kAutoFillPersonalDataManagerFirstRun[]; extern const char kUseVerticalTabs[]; extern const char kEnableTranslate[]; extern const char kPinnedTabs[]; +extern const char kPolicyRefreshRate[]; // Local state extern const char kMetricsClientID[]; @@ -258,6 +265,9 @@ extern const char kStabilityLaunchTimeSec[]; extern const char kStabilityLastTimestampSec[]; extern const char kStabilityRendererHangCount[]; extern const char kStabilityChildProcessCrashCount[]; +extern const char kStabilityOtherUserCrashCount[]; +extern const char kStabilityKernelCrashCount[]; +extern const char kStabilitySystemUncleanShutdownCount[]; extern const char kStabilityBreakpadRegistrationSuccess[]; extern const char kStabilityBreakpadRegistrationFail[]; @@ -289,6 +299,7 @@ extern const char kDownloadExtensionsToOpen[]; extern const char kDownloadDirUpgraded[]; extern const char kSaveFileDefaultDirectory[]; +extern const char kSaveFileType[]; extern const char kSelectFileLastDirectory[]; @@ -363,6 +374,9 @@ extern const char kNTPPromoStart[]; extern const char kNTPPromoEnd[]; extern const char kNTPPromoLine[]; extern const char kNTPPromoClosed[]; +extern const char kNTPPromoGroup[]; +extern const char kNTPPromoGroupTimeSlice[]; +extern const char kNTPPromoBuild[]; extern const char kDevToolsDisabled[]; extern const char kDevToolsOpenDocked[]; @@ -412,10 +426,7 @@ extern const char kCloudPrintPrintSystemSettings[]; extern const char kRemotingHasSetupCompleted[]; extern const char kRemotingHostEnabled[]; -extern const char kProxyMode[]; -extern const char kProxyServer[]; -extern const char kProxyPacUrl[]; -extern const char kProxyBypassList[]; +extern const char kProxy[]; extern const char kManagedDefaultCookiesSetting[]; extern const char kManagedDefaultImagesSetting[]; @@ -425,6 +436,7 @@ extern const char kManagedDefaultPopupsSetting[]; #if defined(OS_CHROMEOS) extern const char kSignedSettingsTempStorage[]; +extern const char kHardwareKeyboardLayout[]; #endif extern const char kRegisteredBackgroundContents[]; diff --git a/chrome/common/pref_store.h b/chrome/common/pref_store.h index 35818a0..819a764 100644 --- a/chrome/common/pref_store.h +++ b/chrome/common/pref_store.h @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -9,6 +9,7 @@ #include <string> #include "base/basictypes.h" +#include "base/ref_counted.h" class Value; @@ -19,7 +20,7 @@ class Value; // CommandLinePrefStore, which bridges command line options to preferences and // ConfigurationPolicyPrefStore, which is used for hooking up configuration // policy with the preference subsystem. -class PrefStore { +class PrefStore : public base::RefCounted<PrefStore> { public: // Observer interface for monitoring PrefStore. class Observer { @@ -43,7 +44,6 @@ class PrefStore { }; PrefStore() {} - virtual ~PrefStore() {} // Add and remove observers. virtual void AddObserver(Observer* observer) {} @@ -57,6 +57,11 @@ class PrefStore { // |result| value remains with the PrefStore. virtual ReadResult GetValue(const std::string& key, Value** result) const = 0; + protected: + friend class base::RefCounted<PrefStore>; + virtual ~PrefStore() {} + + private: DISALLOW_COPY_AND_ASSIGN(PrefStore); }; diff --git a/chrome/common/profiling.cc b/chrome/common/profiling.cc new file mode 100644 index 0000000..bf67885 --- /dev/null +++ b/chrome/common/profiling.cc @@ -0,0 +1,112 @@ +// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/common/profiling.h" + +#include "base/at_exit.h" +#include "base/command_line.h" +#include "base/debug/profiler.h" +#include "base/message_loop.h" +#include "base/string_util.h" +#include "chrome/common/chrome_switches.h" + +namespace { +std::string GetProfileName() { + static const char kDefaultProfileName[] = "chrome-profile-{pid}"; + static std::string profile_name; + + if (profile_name.empty()) { + const CommandLine& command_line = *CommandLine::ForCurrentProcess(); + if (command_line.HasSwitch(switches::kProfilingFile)) + profile_name = command_line.GetSwitchValueASCII(switches::kProfilingFile); + else + profile_name = std::string(kDefaultProfileName); + std::string process_type = + command_line.GetSwitchValueASCII(switches::kProcessType); + std::string type = process_type.empty() ? + std::string("browser") : std::string(process_type); + ReplaceSubstringsAfterOffset(&profile_name, 0, "{type}", type.c_str()); + } + return profile_name; +} + +void FlushProfilingData() { + static const int kProfilingFlushSeconds = 10; + + if (!Profiling::BeingProfiled()) + return; + + base::debug::FlushProfiling(); + static int flush_seconds = 0; + if (!flush_seconds) { + const CommandLine& command_line = *CommandLine::ForCurrentProcess(); + std::string profiling_flush = + command_line.GetSwitchValueASCII(switches::kProfilingFlush); + if (!profiling_flush.empty()) { + flush_seconds = atoi(profiling_flush.c_str()); + DCHECK(flush_seconds > 0); + } else { + flush_seconds = kProfilingFlushSeconds; + } + } + MessageLoop::current()->PostDelayedTask(FROM_HERE, + NewRunnableFunction(FlushProfilingData), + flush_seconds * 1000); +} + +} // namespace + +// static +void Profiling::ProcessStarted() { + const CommandLine& command_line = *CommandLine::ForCurrentProcess(); + std::string process_type = + command_line.GetSwitchValueASCII(switches::kProcessType); + + if (command_line.HasSwitch(switches::kProfilingAtStart)) { + std::string process_type_to_start = + command_line.GetSwitchValueASCII(switches::kProfilingAtStart); + if (process_type == process_type_to_start) + Start(); + } +} + +// static +void Profiling::Start() { + const CommandLine& command_line = *CommandLine::ForCurrentProcess(); + bool flush = command_line.HasSwitch(switches::kProfilingFlush); + base::debug::StartProfiling(GetProfileName()); + + // Schedule profile data flushing for single process because it doesn't + // get written out correctly on exit. + if (flush && MessageLoop::current()) + FlushProfilingData(); +} + +// static +void Profiling::Stop() { + base::debug::StopProfiling(); +} + +// static +bool Profiling::BeingProfiled() { + return base::debug::BeingProfiled(); +} + +// static +void Profiling::Toggle() { + if (BeingProfiled()) + Stop(); + else + Start(); +} + +// static +void Profiling::MainMessageLoopStarted() { + if (BeingProfiled()) { + const CommandLine& command_line = *CommandLine::ForCurrentProcess(); + bool flush = command_line.HasSwitch(switches::kProfilingFlush); + if (flush) + FlushProfilingData(); + } +} diff --git a/chrome/common/profiling.h b/chrome/common/profiling.h new file mode 100644 index 0000000..21aebd1 --- /dev/null +++ b/chrome/common/profiling.h @@ -0,0 +1,48 @@ +// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_COMMON_PROFILING_H_ +#define CHROME_COMMON_PROFILING_H_ +#pragma once + +#include "build/build_config.h" + +#include "base/basictypes.h" +#include "base/debug/profiler.h" + +// The Profiling class manages the interaction with a sampling based profiler. +// Its function is controlled by the kProfilingAtStart, kProfilingFile, and +// kProfilingFlush command line values. +// All of the API should only be called from the main thread of the process. +class Profiling { + public: + // Called early in a process' life to allow profiling of startup time. + // the presence of kProfilingAtStart is checked. + static void ProcessStarted(); + + // Start profiling. + static void Start(); + + // Stop profiling and write out profiling file. + static void Stop(); + + // Returns true if the process is being profiled. + static bool BeingProfiled(); + + // Called when the main message loop is started, so that automatic flushing + // of the profile data file can be done. + static void MainMessageLoopStarted(); + + // Toggle profiling on/off. + static void Toggle(); + + private: + // Do not instantiate this class. + Profiling(); + + DISALLOW_COPY_AND_ASSIGN(Profiling); +}; + +#endif // CHROME_COMMON_PROFILING_H_ + diff --git a/chrome/common/property_bag.h b/chrome/common/property_bag.h index 0a44892..da3ae48 100644 --- a/chrome/common/property_bag.h +++ b/chrome/common/property_bag.h @@ -16,7 +16,7 @@ class PropertyAccessorBase; // A property bag holds a generalized list of arbitrary metadata called // properties. Each property is a class type derived from PropertyBag::Prop -// that can bet set and retrieved. +// that can be set and retrieved. // // The property bag is not read or written directly. Instead, callers go // through a PropertyAccessor. The Accessor generates the unique IDs that diff --git a/chrome/common/remoting/chromoting_host_info.cc b/chrome/common/remoting/chromoting_host_info.cc new file mode 100644 index 0000000..acb0ce5 --- /dev/null +++ b/chrome/common/remoting/chromoting_host_info.cc @@ -0,0 +1,15 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/common/remoting/chromoting_host_info.h" + +namespace remoting { + +ChromotingHostInfo::ChromotingHostInfo() + : enabled(false) { +} + +ChromotingHostInfo::~ChromotingHostInfo() {} + +} // namespace remoting diff --git a/chrome/common/remoting/chromoting_host_info.h b/chrome/common/remoting/chromoting_host_info.h index e803eef..f1816da 100644 --- a/chrome/common/remoting/chromoting_host_info.h +++ b/chrome/common/remoting/chromoting_host_info.h @@ -11,6 +11,9 @@ namespace remoting { // This struct is used for ServiceHostMsg_ChromotingHost_Info IPC message. struct ChromotingHostInfo { + ChromotingHostInfo(); + ~ChromotingHostInfo(); + std::string host_id; std::string hostname; std::string public_key; diff --git a/chrome/common/render_messages.cc b/chrome/common/render_messages.cc index 69b73be..5df43f7 100644 --- a/chrome/common/render_messages.cc +++ b/chrome/common/render_messages.cc @@ -9,21 +9,17 @@ #include "chrome/common/gpu_param_traits.h" #include "chrome/common/render_messages_params.h" #include "chrome/common/resource_response.h" -#include "chrome/common/speech_input_result.h" #include "chrome/common/thumbnail_score.h" #include "chrome/common/web_apps.h" -#include "gfx/rect.h" #include "ipc/ipc_channel_handle.h" #include "media/audio/audio_buffers_state.h" #include "net/base/upload_data.h" #include "net/http/http_response_headers.h" -#include "ppapi/c/private/ppb_flash.h" -#include "third_party/WebKit/WebKit/chromium/public/WebCompositionUnderline.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebCompositionUnderline.h" #include "third_party/skia/include/core/SkBitmap.h" +#include "ui/gfx/rect.h" #include "webkit/appcache/appcache_interfaces.h" #include "webkit/blob/blob_data.h" -#include "webkit/glue/form_field.h" -#include "webkit/glue/password_form.h" #include "webkit/glue/resource_loader_bridge.h" #include "webkit/glue/webaccessibility.h" #include "webkit/glue/webcookie.h" @@ -59,12 +55,18 @@ struct ParamTraits<WebMenuItem::Type> { case WebMenuItem::OPTION: type = "OPTION"; break; + case WebMenuItem::CHECKABLE_OPTION: + type = "CHECKABLE_OPTION"; + break; case WebMenuItem::GROUP: type = "GROUP"; break; case WebMenuItem::SEPARATOR: type = "SEPARATOR"; break; + case WebMenuItem::SUBMENU: + type = "SUBMENU"; + break; default: type = "UNKNOWN"; break; @@ -73,49 +75,6 @@ struct ParamTraits<WebMenuItem::Type> { } }; - -void ParamTraits<webkit_glue::FormField>::Write(Message* m, - const param_type& p) { - WriteParam(m, p.label()); - WriteParam(m, p.name()); - WriteParam(m, p.value()); - WriteParam(m, p.form_control_type()); - WriteParam(m, p.max_length()); - WriteParam(m, p.is_autofilled()); - WriteParam(m, p.option_strings()); -} - -bool ParamTraits<webkit_glue::FormField>::Read(const Message* m, void** iter, - param_type* p) { - string16 label, name, value, form_control_type; - int max_length = 0; - bool is_autofilled; - std::vector<string16> options; - bool result = ReadParam(m, iter, &label); - result = result && ReadParam(m, iter, &name); - result = result && ReadParam(m, iter, &value); - result = result && ReadParam(m, iter, &form_control_type); - result = result && ReadParam(m, iter, &max_length); - result = result && ReadParam(m, iter, &is_autofilled); - result = result && ReadParam(m, iter, &options); - if (!result) - return false; - - p->set_label(label); - p->set_name(name); - p->set_value(value); - p->set_form_control_type(form_control_type); - p->set_max_length(max_length); - p->set_autofilled(is_autofilled); - p->set_option_strings(options); - return true; -} - -void ParamTraits<webkit_glue::FormField>::Log(const param_type& p, - std::string* l) { - l->append("<FormField>"); -} - #if defined(OS_MACOSX) void ParamTraits<FontDescriptor>::Write(Message* m, const param_type& p) { WriteParam(m, p.font_name); @@ -125,9 +84,9 @@ void ParamTraits<FontDescriptor>::Write(Message* m, const param_type& p) { bool ParamTraits<FontDescriptor>::Read(const Message* m, void** iter, param_type* p) { - return( + return ReadParam(m, iter, &p->font_name) && - ReadParam(m, iter, &p->font_point_size)); + ReadParam(m, iter, &p->font_point_size); } void ParamTraits<FontDescriptor>::Log(const param_type& p, std::string* l) { @@ -135,6 +94,31 @@ void ParamTraits<FontDescriptor>::Log(const param_type& p, std::string* l) { } #endif +void ParamTraits<webkit_glue::CustomContextMenuContext>::Write( + Message* m, + const param_type& p) { + WriteParam(m, p.is_pepper_menu); + WriteParam(m, p.request_id); +} + +bool ParamTraits<webkit_glue::CustomContextMenuContext>::Read(const Message* m, + void** iter, + param_type* p) { + return + ReadParam(m, iter, &p->is_pepper_menu) && + ReadParam(m, iter, &p->request_id); +} + +void ParamTraits<webkit_glue::CustomContextMenuContext>::Log( + const param_type& p, + std::string* l) { + l->append("("); + LogParam(p.is_pepper_menu, l); + l->append(", "); + LogParam(p.request_id, l); + l->append(")"); +} + void ParamTraits<ContextMenuParams>::Write(Message* m, const param_type& p) { WriteParam(m, p.media_type); WriteParam(m, p.x); @@ -159,6 +143,7 @@ void ParamTraits<ContextMenuParams>::Write(Message* m, const param_type& p) { WriteParam(m, p.edit_flags); WriteParam(m, p.security_info); WriteParam(m, p.frame_charset); + WriteParam(m, p.custom_context); WriteParam(m, p.custom_items); } @@ -188,6 +173,7 @@ bool ParamTraits<ContextMenuParams>::Read(const Message* m, void** iter, ReadParam(m, iter, &p->edit_flags) && ReadParam(m, iter, &p->security_info) && ReadParam(m, iter, &p->frame_charset) && + ReadParam(m, iter, &p->custom_context) && ReadParam(m, iter, &p->custom_items); } @@ -301,26 +287,6 @@ void ParamTraits<webkit::npapi::WebPluginInfo>::Log(const param_type& p, l->append(")"); } -void ParamTraits<webkit_glue::PasswordFormFillData>::Write( - Message* m, const param_type& p) { - WriteParam(m, p.basic_data); - WriteParam(m, p.additional_logins); - WriteParam(m, p.wait_for_username); -} - -bool ParamTraits<webkit_glue::PasswordFormFillData>::Read( - const Message* m, void** iter, param_type* r) { - return - ReadParam(m, iter, &r->basic_data) && - ReadParam(m, iter, &r->additional_logins) && - ReadParam(m, iter, &r->wait_for_username); -} - -void ParamTraits<webkit_glue::PasswordFormFillData>::Log(const param_type& p, - std::string* l) { - l->append("<PasswordFormFillData>"); -} - void ParamTraits<scoped_refptr<net::HttpResponseHeaders> >::Write( Message* m, const param_type& p) { WriteParam(m, p.get() != NULL); @@ -565,48 +531,22 @@ void ParamTraits<ResourceResponseHead>::Log(const param_type& p, } void ParamTraits<SyncLoadResult>::Write(Message* m, const param_type& p) { - ParamTraits<ResourceResponseHead>::Write(m, p); - WriteParam(m, p.final_url); - WriteParam(m, p.data); - } + ParamTraits<ResourceResponseHead>::Write(m, p); + WriteParam(m, p.final_url); + WriteParam(m, p.data); +} bool ParamTraits<SyncLoadResult>::Read(const Message* m, void** iter, param_type* r) { - return - ParamTraits<ResourceResponseHead>::Read(m, iter, r) && - ReadParam(m, iter, &r->final_url) && - ReadParam(m, iter, &r->data); - } - -void ParamTraits<SyncLoadResult>::Log(const param_type& p, std::string* l) { - // log more? - ParamTraits<webkit_glue::ResourceResponseInfo>::Log(p, l); - } - -void ParamTraits<webkit_glue::FormData>::Write(Message* m, - const param_type& p) { - WriteParam(m, p.name); - WriteParam(m, p.method); - WriteParam(m, p.origin); - WriteParam(m, p.action); - WriteParam(m, p.user_submitted); - WriteParam(m, p.fields); -} - -bool ParamTraits<webkit_glue::FormData>::Read(const Message* m, void** iter, - param_type* p) { return - ReadParam(m, iter, &p->name) && - ReadParam(m, iter, &p->method) && - ReadParam(m, iter, &p->origin) && - ReadParam(m, iter, &p->action) && - ReadParam(m, iter, &p->user_submitted) && - ReadParam(m, iter, &p->fields); + ParamTraits<ResourceResponseHead>::Read(m, iter, r) && + ReadParam(m, iter, &r->final_url) && + ReadParam(m, iter, &r->data); } -void ParamTraits<webkit_glue::FormData>::Log(const param_type& p, - std::string* l) { - l->append("<FormData>"); +void ParamTraits<SyncLoadResult>::Log(const param_type& p, std::string* l) { + // log more? + ParamTraits<webkit_glue::ResourceResponseInfo>::Log(p, l); } void ParamTraits<RendererPreferences>::Write(Message* m, const param_type& p) { @@ -724,13 +664,17 @@ void ParamTraits<WebPreferences>::Write(Message* m, const param_type& p) { WriteParam(m, p.frame_flattening_enabled); WriteParam(m, p.allow_universal_access_from_file_urls); WriteParam(m, p.allow_file_access_from_file_urls); + WriteParam(m, p.webaudio_enabled); WriteParam(m, p.experimental_webgl_enabled); + WriteParam(m, p.gl_multisampling_enabled); WriteParam(m, p.show_composited_layer_borders); WriteParam(m, p.accelerated_compositing_enabled); WriteParam(m, p.accelerated_2d_canvas_enabled); + WriteParam(m, p.accelerated_plugins_enabled); WriteParam(m, p.accelerated_layers_enabled); WriteParam(m, p.accelerated_video_enabled); WriteParam(m, p.memory_info_enabled); + WriteParam(m, p.interactive_form_validation_enabled); } bool ParamTraits<WebPreferences>::Read(const Message* m, void** iter, @@ -776,13 +720,17 @@ bool ParamTraits<WebPreferences>::Read(const Message* m, void** iter, ReadParam(m, iter, &p->frame_flattening_enabled) && ReadParam(m, iter, &p->allow_universal_access_from_file_urls) && ReadParam(m, iter, &p->allow_file_access_from_file_urls) && + ReadParam(m, iter, &p->webaudio_enabled) && ReadParam(m, iter, &p->experimental_webgl_enabled) && + ReadParam(m, iter, &p->gl_multisampling_enabled) && ReadParam(m, iter, &p->show_composited_layer_borders) && ReadParam(m, iter, &p->accelerated_compositing_enabled) && ReadParam(m, iter, &p->accelerated_2d_canvas_enabled) && + ReadParam(m, iter, &p->accelerated_plugins_enabled) && ReadParam(m, iter, &p->accelerated_layers_enabled) && ReadParam(m, iter, &p->accelerated_video_enabled) && - ReadParam(m, iter, &p->memory_info_enabled); + ReadParam(m, iter, &p->memory_info_enabled) && + ReadParam(m, iter, &p->interactive_form_validation_enabled); } void ParamTraits<WebPreferences>::Log(const param_type& p, std::string* l) { @@ -826,9 +774,12 @@ void ParamTraits<WebDropData>::Log(const param_type& p, std::string* l) { void ParamTraits<WebMenuItem>::Write(Message* m, const param_type& p) { WriteParam(m, p.label); WriteParam(m, p.type); + WriteParam(m, p.action); + WriteParam(m, p.rtl); + WriteParam(m, p.has_directional_override); WriteParam(m, p.enabled); WriteParam(m, p.checked); - WriteParam(m, p.action); + WriteParam(m, p.submenu); } bool ParamTraits<WebMenuItem>::Read(const Message* m, @@ -837,9 +788,12 @@ bool ParamTraits<WebMenuItem>::Read(const Message* m, return ReadParam(m, iter, &p->label) && ReadParam(m, iter, &p->type) && + ReadParam(m, iter, &p->action) && + ReadParam(m, iter, &p->rtl) && + ReadParam(m, iter, &p->has_directional_override) && ReadParam(m, iter, &p->enabled) && ReadParam(m, iter, &p->checked) && - ReadParam(m, iter, &p->action); + ReadParam(m, iter, &p->submenu); } void ParamTraits<WebMenuItem>::Log(const param_type& p, std::string* l) { @@ -848,11 +802,17 @@ void ParamTraits<WebMenuItem>::Log(const param_type& p, std::string* l) { l->append(", "); LogParam(p.type, l); l->append(", "); + LogParam(p.action, l); + l->append(", "); + LogParam(p.rtl, l); + l->append(", "); + LogParam(p.has_directional_override, l); + l->append(", "); LogParam(p.enabled, l); l->append(", "); LogParam(p.checked, l); l->append(", "); - LogParam(p.action, l); + LogParam(p.submenu, l); l->append(")"); } @@ -1216,55 +1176,4 @@ void ParamTraits<AudioBuffersState>::Log(const param_type& p, std::string* l) { l->append(")"); } -void ParamTraits<speech_input::SpeechInputResultItem>::Write( - Message* m, const param_type& p) { - WriteParam(m, p.utterance); - WriteParam(m, p.confidence); -} - -bool ParamTraits<speech_input::SpeechInputResultItem>::Read(const Message* m, - void** iter, - param_type* p) { - return ReadParam(m, iter, &p->utterance) && - ReadParam(m, iter, &p->confidence); -} - -void ParamTraits<speech_input::SpeechInputResultItem>::Log(const param_type& p, - std::string* l) { - l->append("("); - LogParam(p.utterance, l); - l->append(":"); - LogParam(p.confidence, l); - l->append(")"); -} - -void ParamTraits<PP_Flash_NetAddress>::Write(Message* m, const param_type& p) { - WriteParam(m, p.size); - m->WriteBytes(p.data, p.size); -} - -bool ParamTraits<PP_Flash_NetAddress>::Read(const Message* m, - void** iter, - param_type* p) { - uint16 size; - if (!ReadParam(m, iter, &size)) - return false; - if (size > sizeof(p->data)) - return false; - p->size = size; - - const char* data; - if (!m->ReadBytes(iter, &data, size)) - return false; - memcpy(p->data, data, size); - return true; -} - -void ParamTraits<PP_Flash_NetAddress>::Log(const param_type& p, - std::string* l) { - l->append("<PP_Flash_NetAddress ("); - LogParam(p.size, l); - l->append(" bytes)>"); -} - } // namespace IPC diff --git a/chrome/common/render_messages.h b/chrome/common/render_messages.h index 258734a..2e94d53 100644 --- a/chrome/common/render_messages.h +++ b/chrome/common/render_messages.h @@ -11,7 +11,6 @@ // TODO(erg): This list has been temporarily annotated by erg while doing work // on which headers to pull out. -#include "app/clipboard/clipboard.h" // enum #include "base/basictypes.h" #include "base/ref_counted.h" #include "base/string16.h" @@ -23,6 +22,7 @@ #include "chrome/common/webkit_param_traits.h" #include "ipc/ipc_message_utils.h" #include "ipc/ipc_platform_file.h" // ifdefed typedef. +#include "ui/base/clipboard/clipboard.h" // enum #include "webkit/appcache/appcache_interfaces.h" // enum appcache::Status #include "webkit/fileapi/file_system_types.h" // enum fileapi::FileSystemType @@ -48,14 +48,8 @@ namespace webkit_blob { class BlobData; } -namespace speech_input { -struct SpeechInputResultItem; -} - namespace webkit_glue { -struct FormData; -class FormField; -struct PasswordFormFillData; +struct CustomContextMenuContext; struct ResourceDevToolsInfo; struct ResourceLoadTimingInfo; struct ResourceResponseInfo; @@ -111,8 +105,7 @@ struct ViewHostMsg_ShowNotification_Params; struct ViewMsg_New_Params; struct ViewHostMsg_CreateWindow_Params; struct ViewHostMsg_RunFileChooser_Params; -struct ViewMsg_ExtensionRendererInfo; -struct ViewMsg_ExtensionsUpdated_Params; +struct ViewMsg_ExtensionLoaded_Params; struct ViewMsg_DeviceOrientationUpdated_Params; struct ViewHostMsg_DomMessage_Params; struct ViewHostMsg_AccessibilityNotification_Params; @@ -126,27 +119,38 @@ enum ViewHostMsg_EnablePreferredSizeChangedMode_Flags { kPreferredSizeHeightThisIsSlow = 1 << 1, }; +// Command values for the cmd parameter of the +// ViewHost_JavaScriptStressTestControl message. For each command the parameter +// passed has a different meaning: +// For the command kJavaScriptStressTestSetStressRunType the parameter it the +// type taken from the enumeration v8::Testing::StressType. +// For the command kJavaScriptStressTestPrepareStressRun the parameter it the +// number of the stress run about to take place. +enum ViewHostMsg_JavaScriptStressTestControl_Commands { + kJavaScriptStressTestSetStressRunType = 0, + kJavaScriptStressTestPrepareStressRun = 1, +}; + namespace IPC { -// Traits for FormField_Params structure to pack/unpack. +#if defined(OS_MACOSX) +// Traits for FontDescriptor structure to pack/unpack. template <> -struct ParamTraits<webkit_glue::FormField> { - typedef webkit_glue::FormField param_type; +struct ParamTraits<FontDescriptor> { + typedef FontDescriptor param_type; static void Write(Message* m, const param_type& p); static bool Read(const Message* m, void** iter, param_type* p); static void Log(const param_type& p, std::string* l); }; +#endif -#if defined(OS_MACOSX) -// Traits for FontDescriptor structure to pack/unpack. template <> -struct ParamTraits<FontDescriptor> { - typedef FontDescriptor param_type; +struct ParamTraits<webkit_glue::CustomContextMenuContext> { + typedef webkit_glue::CustomContextMenuContext param_type; static void Write(Message* m, const param_type& p); static bool Read(const Message* m, void** iter, param_type* p); static void Log(const param_type& p, std::string* l); }; -#endif template <> struct ParamTraits<ContextMenuParams> { @@ -181,15 +185,6 @@ struct ParamTraits<webkit::npapi::WebPluginInfo> { static void Log(const param_type& p, std::string* l); }; -// Traits for webkit_glue::PasswordFormDomManager::FillData. -template <> -struct ParamTraits<webkit_glue::PasswordFormFillData> { - typedef webkit_glue::PasswordFormFillData param_type; - static void Write(Message* m, const param_type& p); - static bool Read(const Message* m, void** iter, param_type* r); - static void Log(const param_type& p, std::string* l); -}; - template <> struct ParamTraits<scoped_refptr<net::HttpResponseHeaders> > { typedef scoped_refptr<net::HttpResponseHeaders> param_type; @@ -240,15 +235,6 @@ struct ParamTraits<SyncLoadResult> { static void Log(const param_type& p, std::string* l); }; -// Traits for FormData structure to pack/unpack. -template <> -struct ParamTraits<webkit_glue::FormData> { - typedef webkit_glue::FormData param_type; - static void Write(Message* m, const param_type& p); - static bool Read(const Message* m, void** iter, param_type* p); - static void Log(const param_type& p, std::string* l); -}; - // Traits for reading/writing CSS Colors template <> struct ParamTraits<CSSColors::CSSColorName> { @@ -431,30 +417,30 @@ struct ParamTraits<URLPattern> { }; template <> -struct ParamTraits<Clipboard::Buffer> { - typedef Clipboard::Buffer param_type; +struct ParamTraits<ui::Clipboard::Buffer> { + typedef ui::Clipboard::Buffer param_type; static void Write(Message* m, const param_type& p) { m->WriteInt(p); } static bool Read(const Message* m, void** iter, param_type* p) { int buffer; - if (!m->ReadInt(iter, &buffer) || !Clipboard::IsValidBuffer(buffer)) + if (!m->ReadInt(iter, &buffer) || !ui::Clipboard::IsValidBuffer(buffer)) return false; - *p = Clipboard::FromInt(buffer); + *p = ui::Clipboard::FromInt(buffer); return true; } static void Log(const param_type& p, std::string* l) { std::string type; switch (p) { - case Clipboard::BUFFER_STANDARD: + case ui::Clipboard::BUFFER_STANDARD: type = "BUFFER_STANDARD"; break; #if defined(USE_X11) - case Clipboard::BUFFER_SELECTION: + case ui::Clipboard::BUFFER_SELECTION: type = "BUFFER_SELECTION"; break; #endif - case Clipboard::BUFFER_DRAG: + case ui::Clipboard::BUFFER_DRAG: type = "BUFFER_DRAG"; break; default: @@ -544,22 +530,6 @@ struct ParamTraits<AudioBuffersState> { static void Log(const param_type& p, std::string* l); }; -template <> -struct ParamTraits<speech_input::SpeechInputResultItem> { - typedef speech_input::SpeechInputResultItem param_type; - static void Write(Message* m, const param_type& p); - static bool Read(const Message* m, void** iter, param_type* p); - static void Log(const param_type& p, std::string* l); -}; - -template <> -struct ParamTraits<PP_Flash_NetAddress> { - typedef PP_Flash_NetAddress param_type; - static void Write(Message* m, const param_type& p); - static bool Read(const Message* m, void** iter, param_type* p); - static void Log(const param_type& p, std::string* l); -}; - } // namespace IPC #include "chrome/common/render_messages_internal.h" diff --git a/chrome/common/render_messages_internal.h b/chrome/common/render_messages_internal.h index 9436e1a..b20dc5f 100644 --- a/chrome/common/render_messages_internal.h +++ b/chrome/common/render_messages_internal.h @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -15,21 +15,19 @@ #include "base/platform_file.h" #include "base/sync_socket.h" #include "chrome/common/content_settings.h" +#include "chrome/common/extensions/extension.h" #include "chrome/common/geoposition.h" #include "chrome/common/nacl_types.h" #include "chrome/common/notification_type.h" #include "chrome/common/page_zoom.h" -#include "chrome/common/speech_input_result.h" #include "chrome/common/translate_errors.h" #include "chrome/common/window_container_type.h" #include "ipc/ipc_message_macros.h" #include "media/audio/audio_buffers_state.h" -#include "third_party/WebKit/WebKit/chromium/public/WebFindOptions.h" -#include "third_party/WebKit/WebKit/chromium/public/WebMediaPlayerAction.h" -#include "third_party/WebKit/WebKit/chromium/public/WebScreenInfo.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebFindOptions.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebMediaPlayerAction.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebScreenInfo.h" #include "webkit/glue/context_menu.h" -#include "webkit/glue/form_data.h" -#include "webkit/glue/password_form_dom_manager.h" #include "webkit/glue/webdropdata.h" #include "webkit/plugins/npapi/webplugininfo.h" @@ -51,7 +49,6 @@ typedef std::map<std::string, std::string> SubstitutionMap; class Value; class GPUInfo; -struct PP_Flash_NetAddress; class SkBitmap; struct ThumbnailScore; class WebCursor; @@ -94,6 +91,10 @@ IPC_MESSAGE_CONTROL1(ViewMsg_SetNextPageID, IPC_MESSAGE_ROUTED1(ViewMsg_SetCSSColors, std::vector<CSSColors::CSSColorMapping>) +// Asks the browser for a unique routing ID. +IPC_SYNC_MESSAGE_CONTROL0_1(ViewHostMsg_GenerateRoutingID, + int /* routing_id */) + // Tells the renderer to create a new view. // This message is slightly different, the view it takes (via // ViewMsg_New_Params) is the view to create, the message itself is sent as a @@ -126,6 +127,8 @@ IPC_MESSAGE_ROUTED2(ViewMsg_MediaPlayerActionAt, gfx::Point, /* location */ WebKit::WebMediaPlayerAction) +IPC_MESSAGE_ROUTED0(ViewMsg_PrintNodeUnderContextMenu) + // Tells the render view to close. IPC_MESSAGE_ROUTED0(ViewMsg_Close) @@ -214,7 +217,7 @@ IPC_MESSAGE_ROUTED0(ViewMsg_HandleInputEvent) // Parameters // * edit_commands (see chrome/common/edit_command_types.h) // Contains one or more edit commands. -// See third_party/WebKit/WebCore/editing/EditorCommand.cpp for detailed +// See third_party/WebKit/Source/WebCore/editing/EditorCommand.cpp for detailed // definition of webkit edit commands. // // This message must be sent just before sending a key event. @@ -354,7 +357,7 @@ IPC_MESSAGE_ROUTED2(ViewMsg_Resource_DataDownloaded, // Sent when the request has been completed. IPC_MESSAGE_ROUTED4(ViewMsg_Resource_RequestComplete, int /* request_id */, - URLRequestStatus /* status */, + net::URLRequestStatus /* status */, std::string /* security info */, base::Time /* completion_time */) @@ -461,15 +464,6 @@ IPC_MESSAGE_ROUTED0(ViewMsg_ResetPageEncodingToDefault) IPC_MESSAGE_ROUTED1(ViewMsg_ReservePageIDRange, int /* size_of_range */) -// Fill a form with data and optionally submit it -IPC_MESSAGE_ROUTED1(ViewMsg_FormFill, - webkit_glue::FormData /* form */) - -// Fill a password form and prepare field autocomplete for multiple -// matching logins. -IPC_MESSAGE_ROUTED1(ViewMsg_FillPasswordForm, - webkit_glue::PasswordFormFillData) - // D&d drop target messages. IPC_MESSAGE_ROUTED4(ViewMsg_DragTargetDragEnter, WebDropData /* drop_data */, @@ -502,9 +496,9 @@ IPC_MESSAGE_ROUTED0(ViewMsg_DragSourceSystemDragEnded) IPC_MESSAGE_ROUTED1(ViewMsg_AllowBindings, int /* enabled_bindings_flags */) -// Tell the renderer to add a property to the DOMUI binding object. This -// only works if we allowed DOMUI bindings. -IPC_MESSAGE_ROUTED2(ViewMsg_SetDOMUIProperty, +// Tell the renderer to add a property to the WebUI binding object. This +// only works if we allowed WebUI bindings. +IPC_MESSAGE_ROUTED2(ViewMsg_SetWebUIProperty, std::string /* property_name */, std::string /* property_value_json */) @@ -561,6 +555,9 @@ IPC_MESSAGE_CONTROL1(ViewMsg_PurgePluginListCache, // Tells the render view to load all blocked plugins. IPC_MESSAGE_ROUTED0(ViewMsg_LoadBlockedPlugins) +// Tells the render view a prerendered page is about to be displayed. +IPC_MESSAGE_ROUTED0(ViewMsg_DisplayPrerenderedPage) + IPC_MESSAGE_ROUTED1(ViewMsg_RunFileChooserResponse, std::vector<FilePath> /* selected files */) @@ -647,7 +644,7 @@ IPC_MESSAGE_ROUTED3(ViewMsg_HandleMessageFromExternalHost, IPC_MESSAGE_ROUTED0(ViewMsg_DisassociateFromPopupCount) // The browser sends this to a renderer process in response to a -// ViewHostMsg_EstablishGpuChannel message. +// GpuHostMsg_EstablishGpuChannel message. IPC_MESSAGE_CONTROL2(ViewMsg_GpuChannelEstablished, IPC::ChannelHandle /* handle to channel */, GPUInfo /* stats about GPU process*/) @@ -692,21 +689,6 @@ IPC_MESSAGE_CONTROL2(AppCacheMsg_ContentBlocked, int /* host_id */, GURL /* manifest_url */) -// Reply to the ViewHostMsg_QueryFormFieldAutoFill message with the -// AutoFill suggestions. -IPC_MESSAGE_ROUTED5(ViewMsg_AutoFillSuggestionsReturned, - int /* id of the request message */, - std::vector<string16> /* names */, - std::vector<string16> /* labels */, - std::vector<string16> /* icons */, - std::vector<int> /* unique_ids */) - -// Reply to the ViewHostMsg_FillAutoFillFormData message with the -// AutoFill form data. -IPC_MESSAGE_ROUTED2(ViewMsg_AutoFillFormDataFilled, - int /* id of the request message */, - webkit_glue::FormData /* form data */) - // Sent by the Browser process to alert a window about whether a it should // allow a scripted window.close(). The renderer assumes every new window is a // blocked popup until notified otherwise. @@ -781,6 +763,10 @@ IPC_MESSAGE_ROUTED4(ViewMsg_ExtensionMessageInvoke, IPC_MESSAGE_CONTROL1(ViewMsg_Extension_SetFunctionNames, std::vector<std::string>) +// TODO(aa): SetAPIPermissions, SetHostPermissions, and possibly +// UpdatePageActions should be replaced with just sending additional data in +// ExtensionLoaded. See: crbug.com/70516. + // Tell the renderer process which permissions the given extension has. See // Extension::Permissions for which elements correspond to which permissions. IPC_MESSAGE_CONTROL2(ViewMsg_Extension_SetAPIPermissions, @@ -799,6 +785,17 @@ IPC_MESSAGE_CONTROL2(ViewMsg_Extension_UpdatePageActions, std::string /* extension_id */, std::vector<std::string> /* page_action_ids */) +// Notifies the renderer that an extension was loaded in the browser. +IPC_MESSAGE_CONTROL1(ViewMsg_ExtensionLoaded, ViewMsg_ExtensionLoaded_Params); + +// Notifies the renderer that an extension was unloaded in the browser. +IPC_MESSAGE_CONTROL1(ViewMsg_ExtensionUnloaded, std::string); + +// Updates the scripting whitelist for extensions in the render process. This is +// only used for testing. +IPC_MESSAGE_CONTROL1(ViewMsg_Extension_SetScriptingWhitelist, + Extension::ScriptingWhitelist /* extenison ids */); + // Changes the text direction of the currently selected input field (if any). IPC_MESSAGE_ROUTED1(ViewMsg_SetTextDirection, WebKit::WebTextDirection /* direction */) @@ -822,19 +819,21 @@ IPC_MESSAGE_ROUTED0(ViewMsg_Move_ACK) IPC_MESSAGE_ROUTED1(ViewMsg_EnablePreferredSizeChangedMode, int /*flags*/) IPC_MESSAGE_ROUTED4(ViewMsg_SearchBoxChange, - string16 /*value*/, - bool /*verbatim*/, - int /*selection_start*/, - int /*selection_end*/) + string16 /* value */, + bool /* verbatim */, + int /* selection_start */, + int /* selection_end */) IPC_MESSAGE_ROUTED2(ViewMsg_SearchBoxSubmit, - string16 /*value*/, - bool /*verbatim*/) + string16 /* value */, + bool /* verbatim */) IPC_MESSAGE_ROUTED0(ViewMsg_SearchBoxCancel) IPC_MESSAGE_ROUTED1(ViewMsg_SearchBoxResize, - gfx::Rect /*search_box_bounds*/) -IPC_MESSAGE_ROUTED2(ViewMsg_DetermineIfPageSupportsInstant, - string16 /*value*/, - bool /* verbatim */) + gfx::Rect /* search_box_bounds */) +IPC_MESSAGE_ROUTED4(ViewMsg_DetermineIfPageSupportsInstant, + string16 /* value*/, + bool /* verbatim */, + int /* selection_start */, + int /* selection_end */) // Used to tell the renderer not to add scrollbars with height and // width below a threshold. @@ -880,8 +879,8 @@ IPC_MESSAGE_ROUTED2(ViewMsg_WindowFrameChanged, gfx::Rect /* window frame */, gfx::Rect /* content view frame */) -// Tell the renderer that text has been retured from plugin IME. -IPC_MESSAGE_ROUTED2(ViewMsg_PluginImeCompositionConfirmed, +// Tell the renderer that plugin IME has completed. +IPC_MESSAGE_ROUTED2(ViewMsg_PluginImeCompositionCompleted, string16 /* text */, int /* plugin_id */) #endif @@ -956,7 +955,8 @@ IPC_MESSAGE_CONTROL1(ViewMsg_SpellChecker_EnableAutoSpellCorrect, bool /* enable */) // Executes custom context menu action that was provided from WebKit. -IPC_MESSAGE_ROUTED1(ViewMsg_CustomContextMenuAction, +IPC_MESSAGE_ROUTED2(ViewMsg_CustomContextMenuAction, + webkit_glue::CustomContextMenuContext /* custom_context */, unsigned /* action */) // Tells the renderer to translate the page contents from one language to @@ -990,10 +990,6 @@ IPC_MESSAGE_ROUTED1(ViewMsg_Geolocation_PositionUpdated, IPC_MESSAGE_CONTROL1(ViewMsg_SetIsIncognitoProcess, bool /* is_incognito_processs */) -// Notification that the list of extensions has been updated. -IPC_MESSAGE_CONTROL1(ViewMsg_ExtensionsUpdated, - ViewMsg_ExtensionsUpdated_Params) - // Enable accessibility in the renderer process. IPC_MESSAGE_ROUTED0(ViewMsg_EnableAccessibility) @@ -1010,22 +1006,6 @@ IPC_MESSAGE_ROUTED1(ViewMsg_AccessibilityDoDefaultAction, // message was processed and it can send addition notifications. IPC_MESSAGE_ROUTED0(ViewMsg_AccessibilityNotifications_ACK) -// Relay a speech recognition result, either partial or final. -IPC_MESSAGE_ROUTED2(ViewMsg_SpeechInput_SetRecognitionResult, - int /* request id */, - speech_input::SpeechInputResultArray /* result */) - -// Indicate that speech recognizer has stopped recording and started -// recognition. -IPC_MESSAGE_ROUTED1(ViewMsg_SpeechInput_RecordingComplete, - int /* request id */) - -// Indicate that speech recognizer has completed recognition. This will be -// the last message sent in response to a -// ViewHostMsg_SpeechInput_StartRecognition. -IPC_MESSAGE_ROUTED1(ViewMsg_SpeechInput_RecognitionComplete, - int /* request id */) - // Notification that the device's orientation has changed. IPC_MESSAGE_ROUTED1(ViewMsg_DeviceOrientationUpdated, ViewMsg_DeviceOrientationUpdated_Params) @@ -1068,6 +1048,10 @@ IPC_MESSAGE_ROUTED3(ViewMsg_AsyncOpenFile_ACK, IPC_MESSAGE_CONTROL1(ViewMsg_SetPhishingModel, IPC::PlatformFileForTransit /* model_file */) +// Tells the renderer to begin phishing detection for the given toplevel URL +// which it has started loading. +IPC_MESSAGE_ROUTED1(ViewMsg_StartPhishingDetection, GURL) + // External popup menus. IPC_MESSAGE_ROUTED1(ViewMsg_SelectPopupMenuItem, int /* selected index, -1 means no selection */) @@ -1076,12 +1060,10 @@ IPC_MESSAGE_ROUTED1(ViewMsg_SelectPopupMenuItem, IPC_MESSAGE_CONTROL1(ViewMsg_SpeechInput_SetFeatureEnabled, bool /* enabled */) -// The response to ViewHostMsg_PepperConnectTcp(Address). -IPC_MESSAGE_ROUTED4(ViewMsg_PepperConnectTcpACK, - int /* request_id */, - IPC::PlatformFileForTransit /* socket */, - PP_Flash_NetAddress /* local_addr */, - PP_Flash_NetAddress /* remote_addr */) +// Sent in response to a ViewHostMsg_ContextMenu to let the renderer know that +// the menu has been closed. +IPC_MESSAGE_ROUTED1(ViewMsg_ContextMenuClosed, + webkit_glue::CustomContextMenuContext /* custom_context */) //----------------------------------------------------------------------------- // TabContents messages @@ -1105,9 +1087,8 @@ IPC_SYNC_MESSAGE_CONTROL2_1(ViewHostMsg_CreateWidget, // Similar to ViewHostMsg_CreateWidget except the widget is a full screen // window. -IPC_SYNC_MESSAGE_CONTROL2_1(ViewHostMsg_CreateFullscreenWidget, +IPC_SYNC_MESSAGE_CONTROL1_1(ViewHostMsg_CreateFullscreenWidget, int /* opener_id */, - WebKit::WebPopupType /* popup type */, int /* route_id */) // These three messages are sent to the parent RenderViewHost to display the @@ -1240,8 +1221,9 @@ IPC_MESSAGE_ROUTED4(ViewHostMsg_DidLoadResourceFromMemoryCache, IPC_MESSAGE_ROUTED0(ViewHostMsg_DidDisplayInsecureContent) // Sent when the renderer runs insecure content in a secure origin. -IPC_MESSAGE_ROUTED1(ViewHostMsg_DidRunInsecureContent, - std::string /* security_origin */) +IPC_MESSAGE_ROUTED2(ViewHostMsg_DidRunInsecureContent, + std::string /* security_origin */, + GURL /* target URL */); // Sent when the renderer starts a provisional load for a frame. IPC_MESSAGE_ROUTED3(ViewHostMsg_DidStartProvisionalLoadForFrame, @@ -1394,7 +1376,8 @@ IPC_SYNC_MESSAGE_CONTROL1_1(ViewHostMsg_GetPlugins, // |actual_mime_type| is the actual mime type supported by the // plugin found that match the URL given (one for each item in // |info|). -IPC_SYNC_MESSAGE_CONTROL3_4(ViewHostMsg_GetPluginInfo, +IPC_SYNC_MESSAGE_CONTROL4_4(ViewHostMsg_GetPluginInfo, + int /* routing_id */, GURL /* url */, GURL /* policy_url */, std::string /* mime_type */, @@ -1524,7 +1507,7 @@ IPC_MESSAGE_ROUTED2(ViewHostMsg_DomOperationResponse, // A message from HTML-based UI. When (trusted) Javascript calls // send(message, args), this message is sent to the browser. -IPC_MESSAGE_ROUTED3(ViewHostMsg_DOMUISend, +IPC_MESSAGE_ROUTED3(ViewHostMsg_WebUISend, GURL /* source_url */, std::string /* message */, std::string /* args (as a JSON string) */) @@ -1539,7 +1522,8 @@ IPC_MESSAGE_ROUTED3(ViewHostMsg_ForwardMessageToExternalHost, // create a plugin. The browser will create the plugin process if // necessary, and will return a handle to the channel on success. // On error an empty string is returned. -IPC_SYNC_MESSAGE_CONTROL2_2(ViewHostMsg_OpenChannelToPlugin, +IPC_SYNC_MESSAGE_CONTROL3_2(ViewHostMsg_OpenChannelToPlugin, + int /* routing_id */, GURL /* url */, std::string /* mime_type */, IPC::ChannelHandle /* channel_handle */, @@ -1554,17 +1538,6 @@ IPC_SYNC_MESSAGE_CONTROL1_2(ViewHostMsg_OpenChannelToPepperPlugin, base::ProcessHandle /* plugin_process_handle */, IPC::ChannelHandle /* handle to channel */) -// A renderer sends this to the browser process when it wants to -// create connect to the GPU. The browser will create the GPU process if -// necessary, and will return a handle to the channel via -// a GpuChannelEstablished message. -IPC_MESSAGE_CONTROL0(ViewHostMsg_EstablishGpuChannel) - -// A renderer sends this to the browser process to provide a synchronization -// point for GPU operations, in particular to make sure the GPU channel has -// been established. -IPC_SYNC_MESSAGE_CONTROL0_0(ViewHostMsg_SynchronizeGpu) - // A renderer sends this to the browser process when it wants to start // a new instance of the Native Client process. The browser will launch // the process and return a handle to an IMC channel. @@ -1594,41 +1567,41 @@ IPC_SYNC_MESSAGE_ROUTED1_0(ViewHostMsg_DestroyPluginContainer, // This message is used when the object list does not contain a bitmap. IPC_MESSAGE_CONTROL1(ViewHostMsg_ClipboardWriteObjectsAsync, - Clipboard::ObjectMap /* objects */) + ui::Clipboard::ObjectMap /* objects */) // This message is used when the object list contains a bitmap. // It is synchronized so that the renderer knows when it is safe to // free the shared memory used to transfer the bitmap. IPC_SYNC_MESSAGE_CONTROL2_0(ViewHostMsg_ClipboardWriteObjectsSync, - Clipboard::ObjectMap /* objects */, + ui::Clipboard::ObjectMap /* objects */, base::SharedMemoryHandle /* bitmap handle */) IPC_SYNC_MESSAGE_CONTROL2_1(ViewHostMsg_ClipboardIsFormatAvailable, std::string /* format */, - Clipboard::Buffer /* buffer */, + ui::Clipboard::Buffer /* buffer */, bool /* result */) IPC_SYNC_MESSAGE_CONTROL1_1(ViewHostMsg_ClipboardReadText, - Clipboard::Buffer /* buffer */, + ui::Clipboard::Buffer /* buffer */, string16 /* result */) IPC_SYNC_MESSAGE_CONTROL1_1(ViewHostMsg_ClipboardReadAsciiText, - Clipboard::Buffer /* buffer */, + ui::Clipboard::Buffer /* buffer */, std::string /* result */) IPC_SYNC_MESSAGE_CONTROL1_2(ViewHostMsg_ClipboardReadHTML, - Clipboard::Buffer /* buffer */, + ui::Clipboard::Buffer /* buffer */, string16 /* markup */, GURL /* url */) IPC_SYNC_MESSAGE_CONTROL1_3(ViewHostMsg_ClipboardReadAvailableTypes, - Clipboard::Buffer /* buffer */, + ui::Clipboard::Buffer /* buffer */, bool /* result */, std::vector<string16> /* types */, bool /* contains filenames */) IPC_SYNC_MESSAGE_CONTROL2_3(ViewHostMsg_ClipboardReadData, - Clipboard::Buffer /* buffer */, + ui::Clipboard::Buffer /* buffer */, string16 /* type */, bool /* succeeded */, string16 /* data */, string16 /* metadata */) IPC_SYNC_MESSAGE_CONTROL1_2(ViewHostMsg_ClipboardReadFilenames, - Clipboard::Buffer /* buffer */, + ui::Clipboard::Buffer /* buffer */, bool /* result */, std::vector<string16> /* filenames */) @@ -1671,25 +1644,6 @@ IPC_MESSAGE_ROUTED1(ViewHostMsg_SelectionChanged, IPC_MESSAGE_ROUTED1(ViewHostMsg_RunFileChooser, ViewHostMsg_RunFileChooser_Params) -// Notification that forms have been seen that are candidates for -// filling/submitting by the AutoFillManager. -IPC_MESSAGE_ROUTED1(ViewHostMsg_FormsSeen, - std::vector<webkit_glue::FormData> /* forms */) - -// Notification that password forms have been seen that are candidates for -// filling/submitting by the password manager. -IPC_MESSAGE_ROUTED1(ViewHostMsg_PasswordFormsFound, - std::vector<webkit_glue::PasswordForm> /* forms */) - -// Notification that initial layout has occurred and the following password -// forms are visible on the page (e.g. not set to display:none.) -IPC_MESSAGE_ROUTED1(ViewHostMsg_PasswordFormsVisible, - std::vector<webkit_glue::PasswordForm> /* forms */) - -// Notification that a form has been submitted. The user hit the button. -IPC_MESSAGE_ROUTED1(ViewHostMsg_FormSubmitted, - webkit_glue::FormData /* form */) - // Used to tell the parent the user started dragging in the content area. The // WebDropData struct contains contextual information about the pieces of the // page the user dragged. The parent uses this notification to initiate a @@ -2034,35 +1988,6 @@ IPC_SYNC_MESSAGE_CONTROL1_1(AppCacheMsg_GetResourceList, std::vector<appcache::AppCacheResourceInfo> /* resources out */) -// Queries the browser for AutoFill suggestions for a form input field. -IPC_MESSAGE_ROUTED3(ViewHostMsg_QueryFormFieldAutoFill, - int /* id of this message */, - webkit_glue::FormData /* the form */, - webkit_glue::FormField /* the form field */) - -// Sent when the popup with AutoFill suggestions for a form is shown. -IPC_MESSAGE_ROUTED0(ViewHostMsg_DidShowAutoFillSuggestions) - -// Instructs the browser to fill in the values for a form using AutoFill -// profile data. -IPC_MESSAGE_ROUTED4(ViewHostMsg_FillAutoFillFormData, - int /* id of this message */, - webkit_glue::FormData /* the form */, - webkit_glue::FormField /* the form field */, - int /* profile unique ID */) - -// Sent when a form is previewed or filled with AutoFill suggestions. -IPC_MESSAGE_ROUTED0(ViewHostMsg_DidFillAutoFillFormData) - -// Instructs the browser to remove the specified Autocomplete entry from the -// database. -IPC_MESSAGE_ROUTED2(ViewHostMsg_RemoveAutocompleteEntry, - string16 /* field name */, - string16 /* value */) - -// Instructs the browser to show the AutoFill dialog. -IPC_MESSAGE_ROUTED0(ViewHostMsg_ShowAutoFillDialog) - // Get the list of proxies to use for |url|, as a semicolon delimited list // of "<TYPE> <HOST>:<PORT>" | "DIRECT". See also // PluginProcessHostMsg_ResolveProxy which does the same thing. @@ -2126,6 +2051,14 @@ IPC_MESSAGE_CONTROL2(ViewHostMsg_ExtensionRemoveListener, std::string /* extension_id */, std::string /* name */) +// Message sent from renderer to the browser to update the state of a command. +// The |command| parameter is a RenderViewCommand. The |checked_state| parameter +// is a CommandCheckedState. +IPC_MESSAGE_ROUTED3(ViewHostMsg_CommandStateChanged, + int /* command */, + bool /* is_enabled */, + int /* checked_state */) + #if defined(OS_MACOSX) // On OSX, we cannot allocated shared memory from within the sandbox, so // this call exists for the renderer to ask the browser to allocate memory @@ -2146,11 +2079,14 @@ IPC_SYNC_MESSAGE_CONTROL2_1(ViewHostMsg_AllocTransportDIB, IPC_MESSAGE_CONTROL1(ViewHostMsg_FreeTransportDIB, TransportDIB::Id /* DIB id */) -// Instructs the browser to start or stop plugin IME. -IPC_MESSAGE_ROUTED2(ViewHostMsg_SetPluginImeEnabled, - bool, /* enabled */ +// Informs the browser that a plugin has gained or lost focus. +IPC_MESSAGE_ROUTED2(ViewHostMsg_PluginFocusChanged, + bool, /* focused */ int /* plugin_id */) +// Instructs the browser to start plugin IME. +IPC_MESSAGE_ROUTED0(ViewHostMsg_StartPluginIme) + //--------------------------------------------------------------------------- // Messages related to accelerated plugins @@ -2239,7 +2175,7 @@ IPC_MESSAGE_CONTROL1(ViewHostMsg_DocumentDetached, IPC_MESSAGE_ROUTED1(ViewHostMsg_ShowDesktopNotification, ViewHostMsg_ShowNotification_Params) IPC_MESSAGE_ROUTED1(ViewHostMsg_CancelDesktopNotification, - int /* notification_id */ ) + int /* notification_id */) IPC_MESSAGE_ROUTED2(ViewHostMsg_RequestNotificationPermission, GURL /* origin */, int /* callback_context */) @@ -2449,30 +2385,6 @@ IPC_MESSAGE_ROUTED3(ViewHostMsg_UpdateZoomLimits, int /* maximum_percent */, bool /* remember */) -// Requests the speech input service to start speech recognition on behalf of -// the given |render_view_id|. -IPC_MESSAGE_CONTROL5(ViewHostMsg_SpeechInput_StartRecognition, - int /* render_view_id */, - int /* request_id */, - gfx::Rect /* element_rect */, - std::string /* language */, - std::string /* grammar */) - -// Requests the speech input service to cancel speech recognition on behalf of -// the given |render_view_id|. If speech recognition is not happening nor or -// is happening on behalf of some other render view, this call does nothing. -IPC_MESSAGE_CONTROL2(ViewHostMsg_SpeechInput_CancelRecognition, - int /* render_view_id */, - int /* request id */) - -// Requests the speech input service to stop audio recording on behalf of -// the given |render_view_id|. Any audio recorded so far will be fed to the -// speech recognizer. If speech recognition is not happening nor or is -// happening on behalf of some other render view, this call does nothing. -IPC_MESSAGE_CONTROL2(ViewHostMsg_SpeechInput_StopRecording, - int /* render_view_id */, - int /* request id */) - //--------------------------------------------------------------------------- // Device orientation services messages: @@ -2593,10 +2505,9 @@ IPC_MESSAGE_ROUTED2(ViewHostMsg_InstantSupportDetermined, // Client-Side Phishing Detector --------------------------------------------- // Inform the browser that the current URL is phishing according to the // client-side phishing detector. -IPC_MESSAGE_ROUTED3(ViewHostMsg_DetectedPhishingSite, +IPC_MESSAGE_ROUTED2(ViewHostMsg_DetectedPhishingSite, GURL /* phishing_url */, - double /* phishing_score */, - SkBitmap /* thumbnail */) + double /* phishing_score */) // Response from ViewMsg_ScriptEvalRequest. The ID is the parameter supplied // to ViewMsg_ScriptEvalRequest. The result has the value returned by the @@ -2610,15 +2521,13 @@ IPC_MESSAGE_ROUTED2(ViewHostMsg_ScriptEvalResponse, IPC_MESSAGE_ROUTED1(ViewHostMsg_UpdateContentRestrictions, int /* restrictions */) -// Pepper-related messages ----------------------------------------------------- +// The currently displayed PDF has an unsupported feature. +IPC_MESSAGE_ROUTED0(ViewHostMsg_PDFHasUnsupportedFeature) -IPC_MESSAGE_CONTROL4(ViewHostMsg_PepperConnectTcp, - int /* routing_id */, - int /* request_id */, - std::string /* host */, - uint16 /* port */) +// JavaScript related messages ----------------------------------------------- -IPC_MESSAGE_CONTROL3(ViewHostMsg_PepperConnectTcpAddress, - int /* routing_id */, - int /* request_id */, - PP_Flash_NetAddress /* addr */) +// Notify the JavaScript engine in the render to change its parameters +// while performing stress testing. +IPC_MESSAGE_ROUTED2(ViewMsg_JavaScriptStressTestControl, + int /* cmd */, + int /* param */) diff --git a/chrome/common/render_messages_params.cc b/chrome/common/render_messages_params.cc index 7fab193..3362704 100644 --- a/chrome/common/render_messages_params.cc +++ b/chrome/common/render_messages_params.cc @@ -6,6 +6,7 @@ #include "chrome/common/navigation_gesture.h" #include "chrome/common/common_param_traits.h" +#include "chrome/common/extensions/extension_constants.h" #include "chrome/common/render_messages.h" #include "net/base/upload_data.h" @@ -60,7 +61,7 @@ ViewMsg_ClosePage_Params::~ViewMsg_ClosePage_Params() { ViewHostMsg_Resource_Request::ViewHostMsg_Resource_Request() : load_flags(0), - origin_child_id(0), + origin_pid(0), resource_type(ResourceType::MAIN_FRAME), request_context(0), appcache_host_id(0), @@ -81,7 +82,8 @@ ViewMsg_Print_Params::ViewMsg_Print_Params() max_shrink(0), desired_dpi(0), document_cookie(0), - selection_only(false) { + selection_only(false), + supports_alpha_blend(true) { } ViewMsg_Print_Params::~ViewMsg_Print_Params() { @@ -96,13 +98,15 @@ bool ViewMsg_Print_Params::Equals(const ViewMsg_Print_Params& rhs) const { min_shrink == rhs.min_shrink && max_shrink == rhs.max_shrink && desired_dpi == rhs.desired_dpi && - selection_only == rhs.selection_only; + selection_only == rhs.selection_only && + supports_alpha_blend == rhs.supports_alpha_blend; } bool ViewMsg_Print_Params::IsEmpty() const { return !document_cookie && !desired_dpi && !max_shrink && !min_shrink && !dpi && printable_size.IsEmpty() && !selection_only && - page_size.IsEmpty() && !margin_top && !margin_left; + page_size.IsEmpty() && !margin_top && !margin_left && + !supports_alpha_blend; } ViewMsg_PrintPage_Params::ViewMsg_PrintPage_Params() @@ -231,7 +235,8 @@ ViewHostMsg_CreateWindow_Params::ViewHostMsg_CreateWindow_Params() : opener_id(0), user_gesture(false), window_container_type(WINDOW_CONTAINER_TYPE_NORMAL), - session_storage_namespace_id(0) { + session_storage_namespace_id(0), + opener_frame_id(0) { } ViewHostMsg_CreateWindow_Params::~ViewHostMsg_CreateWindow_Params() { @@ -244,20 +249,6 @@ ViewHostMsg_RunFileChooser_Params::ViewHostMsg_RunFileChooser_Params() ViewHostMsg_RunFileChooser_Params::~ViewHostMsg_RunFileChooser_Params() { } -ViewMsg_ExtensionRendererInfo::ViewMsg_ExtensionRendererInfo() - : location(Extension::INVALID), - allowed_to_execute_script_everywhere(false) { -} - -ViewMsg_ExtensionRendererInfo::~ViewMsg_ExtensionRendererInfo() { -} - -ViewMsg_ExtensionsUpdated_Params::ViewMsg_ExtensionsUpdated_Params() { -} - -ViewMsg_ExtensionsUpdated_Params::~ViewMsg_ExtensionsUpdated_Params() { -} - ViewMsg_DeviceOrientationUpdated_Params:: ViewMsg_DeviceOrientationUpdated_Params() : can_provide_alpha(false), @@ -281,6 +272,59 @@ ViewHostMsg_DomMessage_Params::ViewHostMsg_DomMessage_Params() ViewHostMsg_DomMessage_Params::~ViewHostMsg_DomMessage_Params() { } +ViewMsg_ExtensionLoaded_Params::ViewMsg_ExtensionLoaded_Params() { +} + +ViewMsg_ExtensionLoaded_Params::~ViewMsg_ExtensionLoaded_Params() { +} + +ViewMsg_ExtensionLoaded_Params::ViewMsg_ExtensionLoaded_Params( + const ViewMsg_ExtensionLoaded_Params& other) + : manifest(other.manifest->DeepCopy()), + location(other.location), + path(other.path), + id(other.id) { +} + +ViewMsg_ExtensionLoaded_Params::ViewMsg_ExtensionLoaded_Params( + const Extension* extension) + : manifest(new DictionaryValue()), + location(extension->location()), + path(extension->path()), + id(extension->id()) { + // As we need more bits of extension data in the renderer, add more keys to + // this list. + const char* kRendererExtensionKeys[] = { + extension_manifest_keys::kPublicKey, + extension_manifest_keys::kName, + extension_manifest_keys::kVersion, + extension_manifest_keys::kIcons, + extension_manifest_keys::kPermissions, + extension_manifest_keys::kApp + }; + + // Copy only the data we need. + for (size_t i = 0; i < ARRAYSIZE_UNSAFE(kRendererExtensionKeys); ++i) { + Value* temp = NULL; + if (extension->manifest_value()->Get(kRendererExtensionKeys[i], &temp)) + manifest->Set(kRendererExtensionKeys[i], temp->DeepCopy()); + } +} + +scoped_refptr<Extension> + ViewMsg_ExtensionLoaded_Params::ConvertToExtension() const { + // Extensions that are loaded unpacked won't have a key. + const bool kRequireKey = false; + std::string error; + + scoped_refptr<Extension> extension( + Extension::Create(path, location, *manifest, kRequireKey, &error)); + if (!extension.get()) + LOG(ERROR) << "Error deserializing extension: " << error; + + return extension; +} + namespace IPC { // Self contained templates which are only used inside serializing Params @@ -313,6 +357,10 @@ struct ParamTraits<ViewMsg_Navigate_Params::NavigationType> { event = "NavigationType_RESTORE"; break; + case ViewMsg_Navigate_Params::PRERENDER: + event = "NavigationType_PRERENDER"; + break; + case ViewMsg_Navigate_Params::NORMAL: event = "NavigationType_NORMA"; break; @@ -783,6 +831,7 @@ void ParamTraits<ViewHostMsg_UpdateRect_Params>::Write( WriteParam(m, p.dx); WriteParam(m, p.dy); WriteParam(m, p.scroll_rect); + WriteParam(m, p.scroll_offset); WriteParam(m, p.copy_rects); WriteParam(m, p.view_size); WriteParam(m, p.resizer_rect); @@ -798,6 +847,7 @@ bool ParamTraits<ViewHostMsg_UpdateRect_Params>::Read( ReadParam(m, iter, &p->dx) && ReadParam(m, iter, &p->dy) && ReadParam(m, iter, &p->scroll_rect) && + ReadParam(m, iter, &p->scroll_offset) && ReadParam(m, iter, &p->copy_rects) && ReadParam(m, iter, &p->view_size) && ReadParam(m, iter, &p->resizer_rect) && @@ -874,7 +924,7 @@ void ParamTraits<ViewHostMsg_Resource_Request>::Write(Message* m, WriteParam(m, p.main_frame_origin); WriteParam(m, p.headers); WriteParam(m, p.load_flags); - WriteParam(m, p.origin_child_id); + WriteParam(m, p.origin_pid); WriteParam(m, p.resource_type); WriteParam(m, p.request_context); WriteParam(m, p.appcache_host_id); @@ -897,7 +947,7 @@ bool ParamTraits<ViewHostMsg_Resource_Request>::Read(const Message* m, ReadParam(m, iter, &r->main_frame_origin) && ReadParam(m, iter, &r->headers) && ReadParam(m, iter, &r->load_flags) && - ReadParam(m, iter, &r->origin_child_id) && + ReadParam(m, iter, &r->origin_pid) && ReadParam(m, iter, &r->resource_type) && ReadParam(m, iter, &r->request_context) && ReadParam(m, iter, &r->appcache_host_id) && @@ -923,7 +973,7 @@ void ParamTraits<ViewHostMsg_Resource_Request>::Log(const param_type& p, l->append(", "); LogParam(p.load_flags, l); l->append(", "); - LogParam(p.origin_child_id, l); + LogParam(p.origin_pid, l); l->append(", "); LogParam(p.resource_type, l); l->append(", "); @@ -952,6 +1002,7 @@ void ParamTraits<ViewMsg_Print_Params>::Write(Message* m, const param_type& p) { WriteParam(m, p.desired_dpi); WriteParam(m, p.document_cookie); WriteParam(m, p.selection_only); + WriteParam(m, p.supports_alpha_blend); } bool ParamTraits<ViewMsg_Print_Params>::Read(const Message* m, @@ -966,7 +1017,8 @@ bool ParamTraits<ViewMsg_Print_Params>::Read(const Message* m, ReadParam(m, iter, &p->max_shrink) && ReadParam(m, iter, &p->desired_dpi) && ReadParam(m, iter, &p->document_cookie) && - ReadParam(m, iter, &p->selection_only); + ReadParam(m, iter, &p->selection_only) && + ReadParam(m, iter, &p->supports_alpha_blend); } void ParamTraits<ViewMsg_Print_Params>::Log(const param_type& p, @@ -1345,6 +1397,10 @@ void ParamTraits<ViewHostMsg_CreateWindow_Params>::Write(Message* m, WriteParam(m, p.window_container_type); WriteParam(m, p.session_storage_namespace_id); WriteParam(m, p.frame_name); + WriteParam(m, p.opener_frame_id); + WriteParam(m, p.opener_url); + WriteParam(m, p.opener_security_origin); + WriteParam(m, p.target_url); } bool ParamTraits<ViewHostMsg_CreateWindow_Params>::Read(const Message* m, @@ -1355,7 +1411,11 @@ bool ParamTraits<ViewHostMsg_CreateWindow_Params>::Read(const Message* m, ReadParam(m, iter, &p->user_gesture) && ReadParam(m, iter, &p->window_container_type) && ReadParam(m, iter, &p->session_storage_namespace_id) && - ReadParam(m, iter, &p->frame_name); + ReadParam(m, iter, &p->frame_name) && + ReadParam(m, iter, &p->opener_frame_id) && + ReadParam(m, iter, &p->opener_url) && + ReadParam(m, iter, &p->opener_security_origin) && + ReadParam(m, iter, &p->target_url); } void ParamTraits<ViewHostMsg_CreateWindow_Params>::Log(const param_type& p, @@ -1370,6 +1430,14 @@ void ParamTraits<ViewHostMsg_CreateWindow_Params>::Log(const param_type& p, LogParam(p.session_storage_namespace_id, l); l->append(", "); LogParam(p.frame_name, l); + l->append(", "); + LogParam(p.opener_frame_id, l); + l->append(", "); + LogParam(p.opener_url, l); + l->append(", "); + LogParam(p.opener_security_origin, l); + l->append(", "); + LogParam(p.target_url, l); l->append(")"); } @@ -1427,51 +1495,25 @@ void ParamTraits<ViewHostMsg_RunFileChooser_Params>::Log( LogParam(p.accept_types, l); } -void ParamTraits<ViewMsg_ExtensionRendererInfo>::Write(Message* m, - const param_type& p) { - WriteParam(m, p.id); - WriteParam(m, p.web_extent); - WriteParam(m, p.name); - WriteParam(m, p.icon_url); +void ParamTraits<ViewMsg_ExtensionLoaded_Params>::Write(Message* m, + const param_type& p) { WriteParam(m, p.location); - WriteParam(m, p.allowed_to_execute_script_everywhere); - WriteParam(m, p.host_permissions); + WriteParam(m, p.path); + WriteParam(m, *(p.manifest)); } -bool ParamTraits<ViewMsg_ExtensionRendererInfo>::Read(const Message* m, - void** iter, - param_type* p) { - return ReadParam(m, iter, &p->id) && - ReadParam(m, iter, &p->web_extent) && - ReadParam(m, iter, &p->name) && - ReadParam(m, iter, &p->icon_url) && - ReadParam(m, iter, &p->location) && - ReadParam(m, iter, &p->allowed_to_execute_script_everywhere) && - ReadParam(m, iter, &p->host_permissions); +bool ParamTraits<ViewMsg_ExtensionLoaded_Params>::Read(const Message* m, + void** iter, + param_type* p) { + p->manifest.reset(new DictionaryValue()); + return ReadParam(m, iter, &p->location) && + ReadParam(m, iter, &p->path) && + ReadParam(m, iter, p->manifest.get()); } -void ParamTraits<ViewMsg_ExtensionRendererInfo>::Log(const param_type& p, - std::string* l) { - LogParam(p.id, l); -} - -void ParamTraits<ViewMsg_ExtensionsUpdated_Params>::Write( - Message* m, - const param_type& p) { - WriteParam(m, p.extensions); -} - -bool ParamTraits<ViewMsg_ExtensionsUpdated_Params>::Read( - const Message* m, - void** iter, - param_type* p) { - return ReadParam(m, iter, &p->extensions); -} - -void ParamTraits<ViewMsg_ExtensionsUpdated_Params>::Log( - const param_type& p, - std::string* l) { - LogParam(p.extensions, l); +void ParamTraits<ViewMsg_ExtensionLoaded_Params>::Log(const param_type& p, + std::string* l) { + l->append(p.id); } void ParamTraits<ViewMsg_DeviceOrientationUpdated_Params>::Write( diff --git a/chrome/common/render_messages_params.h b/chrome/common/render_messages_params.h index 97817d2..7bf95e0 100644 --- a/chrome/common/render_messages_params.h +++ b/chrome/common/render_messages_params.h @@ -25,12 +25,12 @@ #include "chrome/common/renderer_preferences.h" #include "chrome/common/serialized_script_value.h" #include "chrome/common/window_container_type.h" -#include "gfx/rect.h" -#include "gfx/size.h" #include "googleurl/src/gurl.h" #include "ipc/ipc_param_traits.h" #include "media/audio/audio_parameters.h" -#include "third_party/WebKit/WebKit/chromium/public/WebTextDirection.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebTextDirection.h" +#include "ui/gfx/rect.h" +#include "ui/gfx/size.h" #include "webkit/glue/password_form.h" #include "webkit/glue/resource_type.h" #include "webkit/glue/webaccessibility.h" @@ -62,6 +62,9 @@ struct ViewMsg_Navigate_Params { // the page's cache policy is ignored and we load from the cache. RESTORE, + // Speculatively prerendering the page. + PRERENDER, + // Navigation type not categorized by the other types. NORMAL }; @@ -341,6 +344,9 @@ struct ViewHostMsg_UpdateRect_Params { // The rectangular region to scroll. gfx::Rect scroll_rect; + // The scroll offset of the render view. + gfx::Size scroll_offset; + // The regions of the bitmap (in view coords) that contain updated pixels. // In the case of scrolling, this includes the scroll damage rect. std::vector<gfx::Rect> copy_rects; @@ -450,16 +456,15 @@ struct ViewHostMsg_Resource_Request { // net::URLRequest load flags (0 by default). int load_flags; - // Unique ID of process that originated this request. For normal renderer - // requests, this will be the ID of the renderer. For plugin requests routed - // through the renderer, this will be the plugin's ID. - int origin_child_id; + // Process ID from which this request originated, or zero if it originated + // in the renderer itself. + int origin_pid; // What this resource load is for (main frame, sub-frame, sub-resource, // object). ResourceType::Type resource_type; - // Used by plugin->browser requests to get the correct URLRequestContext. + // Used by plugin->browser requests to get the correct net::URLRequestContext. uint32 request_context; // Indicates which frame (or worker context) the request is being loaded into, @@ -520,6 +525,9 @@ struct ViewMsg_Print_Params { // Should only print currently selected text. bool selection_only; + // Does the printer support alpha blending? + bool supports_alpha_blend; + // Warning: do not compare document_cookie. bool Equals(const ViewMsg_Print_Params& rhs) const; @@ -552,7 +560,7 @@ struct ViewMsg_PrintPages_Params { std::vector<int> pages; }; -//Parameters to describe a rendered document. +// Parameters to describe a rendered document. struct ViewHostMsg_DidPreviewDocument_Params { ViewHostMsg_DidPreviewDocument_Params(); ~ViewHostMsg_DidPreviewDocument_Params(); @@ -778,6 +786,19 @@ struct ViewHostMsg_CreateWindow_Params { // The name of the resulting frame that should be created (empty if none // has been specified). string16 frame_name; + + // The frame identifier of the frame initiating the open. + int64 opener_frame_id; + + // The URL of the frame initiating the open. + GURL opener_url; + + // The security origin of the frame initiating the open. + std::string opener_security_origin; + + // The URL that will be loaded in the new window (empty if none has been + // sepcified). + GURL target_url; }; struct ViewHostMsg_RunFileChooser_Params { @@ -813,25 +834,31 @@ struct ViewHostMsg_RunFileChooser_Params { string16 accept_types; }; -struct ViewMsg_ExtensionRendererInfo { - ViewMsg_ExtensionRendererInfo(); - ~ViewMsg_ExtensionRendererInfo(); +struct ViewMsg_ExtensionLoaded_Params { + ViewMsg_ExtensionLoaded_Params(); + ~ViewMsg_ExtensionLoaded_Params(); + explicit ViewMsg_ExtensionLoaded_Params(const Extension* extension); - std::string id; - ExtensionExtent web_extent; - std::string name; - GURL icon_url; + // A copy constructor is needed because this structure can end up getting + // copied inside the IPC machinery on gcc <= 4.2. + ViewMsg_ExtensionLoaded_Params( + const ViewMsg_ExtensionLoaded_Params& other); + + // Creates a new extension from the data in this object. + scoped_refptr<Extension> ConvertToExtension() const; + + // The subset of the extension manifest data we send to renderers. + scoped_ptr<DictionaryValue> manifest; + + // The location the extension was installed from. Extension::Location location; - bool allowed_to_execute_script_everywhere; - std::vector<URLPattern> host_permissions; -}; -struct ViewMsg_ExtensionsUpdated_Params { - ViewMsg_ExtensionsUpdated_Params(); - ~ViewMsg_ExtensionsUpdated_Params(); + // The path the extension was loaded from. This is used in the renderer only + // to generate the extension ID for extensions that are loaded unpacked. + FilePath path; - // Describes the installed extension apps and the URLs they cover. - std::vector<ViewMsg_ExtensionRendererInfo> extensions; + // We keep this separate so that it can be used in logging. + std::string id; }; struct ViewMsg_DeviceOrientationUpdated_Params { @@ -1089,16 +1116,8 @@ struct ParamTraits<ViewHostMsg_RunFileChooser_Params> { }; template <> -struct ParamTraits<ViewMsg_ExtensionRendererInfo> { - typedef ViewMsg_ExtensionRendererInfo param_type; - static void Write(Message* m, const param_type& p); - static bool Read(const Message* m, void** iter, param_type* p); - static void Log(const param_type& p, std::string* l); -}; - -template <> -struct ParamTraits<ViewMsg_ExtensionsUpdated_Params> { - typedef ViewMsg_ExtensionsUpdated_Params param_type; +struct ParamTraits<ViewMsg_ExtensionLoaded_Params> { + typedef ViewMsg_ExtensionLoaded_Params param_type; static void Write(Message* m, const param_type& p); static bool Read(const Message* m, void** iter, param_type* p); static void Log(const param_type& p, std::string* l); diff --git a/chrome/common/render_messages_unittest.cc b/chrome/common/render_messages_unittest.cc index b24efde..dea3146 100644 --- a/chrome/common/render_messages_unittest.cc +++ b/chrome/common/render_messages_unittest.cc @@ -9,7 +9,7 @@ #include "testing/gtest/include/gtest/gtest.h" #include "webkit/glue/web_io_operators.h" #include "webkit/glue/webaccessibility.h" -#include "third_party/WebKit/WebKit/chromium/public/WebRect.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebRect.h" TEST(RenderMessagesUnittest, WebAccessibility) { // Test a simple case. diff --git a/chrome/common/render_view_commands.h b/chrome/common/render_view_commands.h new file mode 100644 index 0000000..541e7ea --- /dev/null +++ b/chrome/common/render_view_commands.h @@ -0,0 +1,23 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_COMMON_RENDER_VIEW_COMMANDS_H_ +#define CHROME_COMMON_RENDER_VIEW_COMMANDS_H_ +#pragma once + +// These identify commands that the renderer process enables or disables +// in the browser process. For example, this is used on the Mac to keep +// the spell check menu commands in sync with the renderer state. +enum RenderViewCommand { + RENDER_VIEW_COMMAND_TOGGLE_SPELL_CHECK, +}; + +enum RenderViewCommandCheckedState { + RENDER_VIEW_COMMAND_CHECKED_STATE_UNCHECKED, + RENDER_VIEW_COMMAND_CHECKED_STATE_CHECKED, + RENDER_VIEW_COMMAND_CHECKED_STATE_MIXED, +}; + + +#endif // CHROME_COMMON_RENDER_VIEW_COMMANDS_H_ diff --git a/chrome/common/resource_dispatcher.cc b/chrome/common/resource_dispatcher.cc index e4747b9..86321b5 100644 --- a/chrome/common/resource_dispatcher.cc +++ b/chrome/common/resource_dispatcher.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -106,7 +106,7 @@ IPCResourceLoaderBridge::IPCResourceLoaderBridge( request_.main_frame_origin = request_info.main_frame_origin; request_.headers = request_info.headers; request_.load_flags = request_info.load_flags; - request_.origin_child_id = request_info.requestor_pid; + request_.origin_pid = request_info.requestor_pid; request_.resource_type = request_info.request_type; request_.request_context = request_info.request_context; request_.appcache_host_id = request_info.appcache_host_id; @@ -213,7 +213,7 @@ void IPCResourceLoaderBridge::SetDefersLoading(bool value) { void IPCResourceLoaderBridge::SyncLoad(SyncLoadResponse* response) { if (request_id_ != -1) { NOTREACHED() << "Starting a request twice"; - response->status.set_status(URLRequestStatus::FAILED); + response->status.set_status(net::URLRequestStatus::FAILED); return; } @@ -224,7 +224,7 @@ void IPCResourceLoaderBridge::SyncLoad(SyncLoadResponse* response) { request_, &result); // NOTE: This may pump events (see RenderThread::Send). if (!dispatcher_->message_sender()->Send(msg)) { - response->status.set_status(URLRequestStatus::FAILED); + response->status.set_status(net::URLRequestStatus::FAILED); return; } @@ -402,6 +402,11 @@ void ResourceDispatcher::OnReceivedRedirect( if (request_info->peer->OnReceivedRedirect(new_url, info, &has_new_first_party_for_cookies, &new_first_party_for_cookies)) { + // Double-check if the request is still around. The call above could + // potentially remove it. + request_info = GetPendingRequestInfo(request_id); + if (!request_info) + return; request_info->pending_redirect_message.reset( new ViewHostMsg_FollowRedirect(routing_id, request_id, has_new_first_party_for_cookies, @@ -423,7 +428,7 @@ void ResourceDispatcher::FollowPendingRedirect( } void ResourceDispatcher::OnRequestComplete(int request_id, - const URLRequestStatus& status, + const net::URLRequestStatus& status, const std::string& security_info, const base::Time& completion_time) { PendingRequestInfo* request_info = GetPendingRequestInfo(request_id); @@ -432,7 +437,7 @@ void ResourceDispatcher::OnRequestComplete(int request_id, webkit_glue::ResourceLoaderBridge::Peer* peer = request_info->peer; - if (status.status() == URLRequestStatus::CANCELED && + if (status.status() == net::URLRequestStatus::CANCELED && status.os_error() != net::ERR_ABORTED) { // Resource canceled with a specific error are filtered. SecurityFilterPeer* new_peer = diff --git a/chrome/common/resource_dispatcher.h b/chrome/common/resource_dispatcher.h index 823af81..c9c4be5 100644 --- a/chrome/common/resource_dispatcher.h +++ b/chrome/common/resource_dispatcher.h @@ -29,7 +29,7 @@ class ResourceDispatcher : public IPC::Channel::Listener { ~ResourceDispatcher(); // IPC::Channel::Listener implementation. - bool OnMessageReceived(const IPC::Message& message); + virtual bool OnMessageReceived(const IPC::Message& message); // Creates a ResourceLoaderBridge for this type of dispatcher, this is so // this can be tested regardless of the ResourceLoaderBridge::Create diff --git a/chrome/common/resource_dispatcher_unittest.cc b/chrome/common/resource_dispatcher_unittest.cc index e5d6dfd..3e846f9 100644 --- a/chrome/common/resource_dispatcher_unittest.cc +++ b/chrome/common/resource_dispatcher_unittest.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -64,7 +64,7 @@ class TestRequestCallback : public ResourceLoaderBridge::Peer { data_.append(data, len); } - virtual void OnCompletedRequest(const URLRequestStatus& status, + virtual void OnCompletedRequest(const net::URLRequestStatus& status, const std::string& security_info, const base::Time& completion_time) { EXPECT_FALSE(complete_); @@ -231,7 +231,7 @@ class DeferredResourceLoadingTest : public ResourceDispatcherTest, set_defer_loading(true); ResourceResponseHead response_head; - response_head.status.set_status(URLRequestStatus::SUCCESS); + response_head.status.set_status(net::URLRequestStatus::SUCCESS); IPC::Message* response_message = new ViewMsg_Resource_ReceivedResponse(0, 0, response_head); @@ -284,7 +284,7 @@ class DeferredResourceLoadingTest : public ResourceDispatcherTest, set_defer_loading(false); } - virtual void OnCompletedRequest(const URLRequestStatus& status, + virtual void OnCompletedRequest(const net::URLRequestStatus& status, const std::string& security_info, const base::Time& completion_time) { } @@ -293,7 +293,7 @@ class DeferredResourceLoadingTest : public ResourceDispatcherTest, virtual void SetUp() { ResourceDispatcherTest::SetUp(); shared_handle_.Delete(kShmemSegmentName); - EXPECT_EQ(true, shared_handle_.CreateNamed(kShmemSegmentName, false, 100)); + EXPECT_TRUE(shared_handle_.CreateNamed(kShmemSegmentName, false, 100)); } virtual void TearDown() { diff --git a/chrome/common/resource_response.h b/chrome/common/resource_response.h index 058a811..a5284df 100644 --- a/chrome/common/resource_response.h +++ b/chrome/common/resource_response.h @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -21,7 +21,7 @@ struct ResourceResponseHead : webkit_glue::ResourceResponseInfo { ~ResourceResponseHead(); // The response status. - URLRequestStatus status; + net::URLRequestStatus status; // Whether we should apply a filter to this resource that replaces // localization templates with the appropriate localized strings. This is set diff --git a/chrome/common/sandbox_init_wrapper_linux.cc b/chrome/common/sandbox_init_wrapper_linux.cc index daf02d3..ffb711d 100644 --- a/chrome/common/sandbox_init_wrapper_linux.cc +++ b/chrome/common/sandbox_init_wrapper_linux.cc @@ -5,7 +5,6 @@ #include "chrome/common/sandbox_init_wrapper.h" #include "base/command_line.h" -#include "chrome/common/chrome_switches.h" bool SandboxInitWrapper::InitializeSandbox(const CommandLine& command_line, const std::string& process_type) { diff --git a/chrome/common/sandbox_init_wrapper_win.cc b/chrome/common/sandbox_init_wrapper_win.cc index 5d4399a..a18632e 100644 --- a/chrome/common/sandbox_init_wrapper_win.cc +++ b/chrome/common/sandbox_init_wrapper_win.cc @@ -1,10 +1,12 @@ -// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "chrome/common/sandbox_init_wrapper.h" #include "base/command_line.h" +#include "base/logging.h" + #include "chrome/common/chrome_switches.h" void SandboxInitWrapper::SetServices(sandbox::SandboxInterfaceInfo* info) { @@ -12,6 +14,9 @@ void SandboxInitWrapper::SetServices(sandbox::SandboxInterfaceInfo* info) { broker_services_ = info->broker_services; target_services_ = info->target_services; } + // Both interface pointers cannot be non-zero. A process can either + // be a target or a broker but not both. + DCHECK(!(target_services_ && broker_services_)); } bool SandboxInitWrapper::InitializeSandbox(const CommandLine& command_line, @@ -22,12 +27,16 @@ bool SandboxInitWrapper::InitializeSandbox(const CommandLine& command_line, (process_type == switches::kExtensionProcess) || (process_type == switches::kWorkerProcess) || (process_type == switches::kNaClLoaderProcess) || - (process_type == switches::kUtilityProcess) || - (process_type == switches::kPluginProcess && - command_line.HasSwitch(switches::kSafePlugins))) { + (process_type == switches::kUtilityProcess)) { + // The above five process types must be sandboxed unless --no-sandbox + // is present in the command line. if (!target_services_) return false; - target_services_->Init(); + } else { + // Other process types might or might not be sandboxed. + // TODO(cpu): clean this mess. + if (!target_services_) + return true; } - return true; + return (sandbox::SBOX_ALL_OK == target_services_->Init()); } diff --git a/chrome/common/sandbox_policy.cc b/chrome/common/sandbox_policy.cc index 7436ad2..16049e8 100644 --- a/chrome/common/sandbox_policy.cc +++ b/chrome/common/sandbox_policy.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -6,7 +6,6 @@ #include <string> -#include "app/win/win_util.h" #include "base/command_line.h" #include "base/debug/debugger.h" #include "base/debug/trace_event.h" @@ -64,6 +63,7 @@ const wchar_t* const kTroublesomeDlls[] = { L"radhslib.dll", // Radiant Naomi Internet Filter. L"radprlib.dll", // Radiant Naomi Internet Filter. L"rlhook.dll", // Trustware Bufferzone. + L"rpchromebrowserrecordhelper.dll", // RealPlayer. L"r3hook.dll", // Kaspersky Internet Security. L"sahook.dll", // McAfee Site Advisor. L"sbrige.dll", // Unknown. @@ -325,8 +325,13 @@ bool LoadFlashBroker(const FilePath& plugin_path, CommandLine* cmd_line) { if (0 == ::GetShortPathNameW(plugin_path.value().c_str(), short_path, arraysize(short_path))) return false; + // Here is the kicker, if the user has disabled 8.3 (short path) support + // on the volume GetShortPathNameW does not fail but simply returns the + // input path. In this case if the path had any spaces then rundll32 will + // incorrectly interpret its parameters. So we quote the path, even though + // the kb/164787 says you should not. std::wstring cmd_final = - base::StringPrintf(L"%ls %ls,BrokerMain browser=chrome", + base::StringPrintf(L"%ls \"%ls\",BrokerMain browser=chrome", rundll.value().c_str(), short_path); base::ProcessHandle process; @@ -358,31 +363,35 @@ bool LoadFlashBroker(const FilePath& plugin_path, CommandLine* cmd_line) { } // Creates a sandbox for the built-in flash plugin running in a restricted -// environment. This is a work in progress and for the time being do not -// pay attention to the duplication between this function and the above -// function. For more information see bug 50796. +// environment. This policy is in continual flux as flash changes +// capabilities. For more information see bug 50796. bool ApplyPolicyForBuiltInFlashPlugin(sandbox::TargetPolicy* policy) { - // TODO(cpu): Lock down the job level more. policy->SetJobLevel(sandbox::JOB_UNPROTECTED, 0); + // Vista and Win7 get a weaker token but have low integrity. + if (base::win::GetVersion() > base::win::VERSION_XP) { + policy->SetTokenLevel(sandbox::USER_RESTRICTED_SAME_ACCESS, + sandbox::USER_INTERACTIVE); + policy->SetDelayedIntegrityLevel(sandbox::INTEGRITY_LEVEL_LOW); + } else { + policy->SetTokenLevel(sandbox::USER_UNPROTECTED, + sandbox::USER_LIMITED); - sandbox::TokenLevel initial_token = sandbox::USER_UNPROTECTED; - - if (base::win::GetVersion() > base::win::VERSION_XP) - initial_token = sandbox::USER_RESTRICTED_SAME_ACCESS; - - policy->SetTokenLevel(initial_token, sandbox::USER_LIMITED); - policy->SetDelayedIntegrityLevel(sandbox::INTEGRITY_LEVEL_LOW); + if (!AddKeyAndSubkeys(L"HKEY_LOCAL_MACHINE\\SOFTWARE", + sandbox::TargetPolicy::REG_ALLOW_READONLY, + policy)) + return false; + if (!AddKeyAndSubkeys(L"HKEY_LOCAL_MACHINE\\SYSTEM", + sandbox::TargetPolicy::REG_ALLOW_READONLY, + policy)) + return false; - // TODO(cpu): Proxy registry access and remove these policies. - if (!AddKeyAndSubkeys(L"HKEY_CURRENT_USER\\SOFTWARE\\ADOBE", - sandbox::TargetPolicy::REG_ALLOW_ANY, - policy)) - return false; + if (!AddKeyAndSubkeys(L"HKEY_CURRENT_USER\\SOFTWARE", + sandbox::TargetPolicy::REG_ALLOW_READONLY, + policy)) + return false; + } - if (!AddKeyAndSubkeys(L"HKEY_CURRENT_USER\\SOFTWARE\\MACROMEDIA", - sandbox::TargetPolicy::REG_ALLOW_ANY, - policy)) - return false; + AddDllEvictionPolicy(policy); return true; } @@ -602,14 +611,14 @@ base::ProcessHandle StartProcessWithAccess(CommandLine* cmd_line, if (!exposed_dir.empty()) { result = policy->AddRule(sandbox::TargetPolicy::SUBSYS_FILES, sandbox::TargetPolicy::FILES_ALLOW_ANY, - exposed_dir.ToWStringHack().c_str()); + exposed_dir.value().c_str()); if (result != sandbox::SBOX_ALL_OK) return 0; FilePath exposed_files = exposed_dir.AppendASCII("*"); result = policy->AddRule(sandbox::TargetPolicy::SUBSYS_FILES, sandbox::TargetPolicy::FILES_ALLOW_ANY, - exposed_files.ToWStringHack().c_str()); + exposed_files.value().c_str()); if (result != sandbox::SBOX_ALL_OK) return 0; } diff --git a/chrome/common/section_util_win.cc b/chrome/common/section_util_win.cc new file mode 100644 index 0000000..449151c --- /dev/null +++ b/chrome/common/section_util_win.cc @@ -0,0 +1,29 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/common/section_util_win.h" + +namespace chrome { + +HANDLE GetSectionFromProcess(HANDLE section, HANDLE process, bool read_only) { + HANDLE valid_section = NULL; + DWORD access = STANDARD_RIGHTS_REQUIRED | FILE_MAP_READ; + if (!read_only) + access |= FILE_MAP_WRITE; + DuplicateHandle(process, section, GetCurrentProcess(), &valid_section, access, + FALSE, 0); + return valid_section; +} + +HANDLE GetSectionForProcess(HANDLE section, HANDLE process, bool read_only) { + HANDLE valid_section = NULL; + DWORD access = STANDARD_RIGHTS_REQUIRED | FILE_MAP_READ; + if (!read_only) + access |= FILE_MAP_WRITE; + DuplicateHandle(GetCurrentProcess(), section, process, &valid_section, access, + FALSE, 0); + return valid_section; +} + +} // namespace chrome diff --git a/chrome/common/section_util_win.h b/chrome/common/section_util_win.h new file mode 100644 index 0000000..a3c849e --- /dev/null +++ b/chrome/common/section_util_win.h @@ -0,0 +1,23 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_COMMON_SECTION_UTIL_WIN_H_ +#define CHROME_COMMON_SECTION_UTIL_WIN_H_ +#pragma once + +#include <windows.h> + +namespace chrome { + +// Duplicates a section handle from another process to the current process. +// Returns the new valid handle if the function succeed. NULL otherwise. +HANDLE GetSectionFromProcess(HANDLE section, HANDLE process, bool read_only); + +// Duplicates a section handle from the current process for use in another +// process. Returns the new valid handle or NULL on failure. +HANDLE GetSectionForProcess(HANDLE section, HANDLE process, bool read_only); + +} // namespace chrome + +#endif // CHROME_COMMON_SECTION_UTIL_WIN_H_ diff --git a/chrome/common/security_filter_peer.cc b/chrome/common/security_filter_peer.cc index 3be8864..93277a8 100644 --- a/chrome/common/security_filter_peer.cc +++ b/chrome/common/security_filter_peer.cc @@ -1,13 +1,13 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. #include "chrome/common/security_filter_peer.h" -#include "app/l10n_util.h" #include "grit/generated_resources.h" #include "net/base/net_errors.h" #include "net/http/http_response_headers.h" +#include "ui/base/l10n/l10n_util.h" SecurityFilterPeer::SecurityFilterPeer( webkit_glue::ResourceLoaderBridge* resource_loader_bridge, @@ -84,7 +84,7 @@ void SecurityFilterPeer::OnReceivedData(const char* data, int len) { NOTREACHED(); } -void SecurityFilterPeer::OnCompletedRequest(const URLRequestStatus& status, +void SecurityFilterPeer::OnCompletedRequest(const net::URLRequestStatus& status, const std::string& security_info, const base::Time& completion_time) { NOTREACHED(); @@ -143,17 +143,18 @@ void BufferedPeer::OnReceivedData(const char* data, int len) { data_.append(data, len); } -void BufferedPeer::OnCompletedRequest(const URLRequestStatus& status, +void BufferedPeer::OnCompletedRequest(const net::URLRequestStatus& status, const std::string& security_info, const base::Time& completion_time) { // Make sure we delete ourselves at the end of this call. scoped_ptr<BufferedPeer> this_deleter(this); // Give sub-classes a chance at altering the data. - if (status.status() != URLRequestStatus::SUCCESS || !DataReady()) { + if (status.status() != net::URLRequestStatus::SUCCESS || !DataReady()) { // Pretend we failed to load the resource. original_peer_->OnReceivedResponse(response_info_, true); - URLRequestStatus status(URLRequestStatus::CANCELED, net::ERR_ABORTED); + net::URLRequestStatus status(net::URLRequestStatus::CANCELED, + net::ERR_ABORTED); original_peer_->OnCompletedRequest(status, security_info, completion_time); return; } @@ -192,7 +193,7 @@ void ReplaceContentPeer::OnReceivedData(const char* data, int len) { } void ReplaceContentPeer::OnCompletedRequest( - const URLRequestStatus& status, + const net::URLRequestStatus& status, const std::string& security_info, const base::Time& completion_time) { webkit_glue::ResourceResponseInfo info; @@ -203,7 +204,7 @@ void ReplaceContentPeer::OnCompletedRequest( if (!data_.empty()) original_peer_->OnReceivedData(data_.data(), static_cast<int>(data_.size())); - original_peer_->OnCompletedRequest(URLRequestStatus(), + original_peer_->OnCompletedRequest(net::URLRequestStatus(), security_info, completion_time); diff --git a/chrome/common/serialized_script_value.cc b/chrome/common/serialized_script_value.cc index deff44c..407fb97 100644 --- a/chrome/common/serialized_script_value.cc +++ b/chrome/common/serialized_script_value.cc @@ -4,8 +4,8 @@ #include "chrome/common/serialized_script_value.h" -#include "third_party/WebKit/WebKit/chromium/public/WebSerializedScriptValue.h" -#include "third_party/WebKit/WebKit/chromium/public/WebString.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebSerializedScriptValue.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h" using WebKit::WebSerializedScriptValue; diff --git a/chrome/common/service_process_util.cc b/chrome/common/service_process_util.cc index bcbac69..458f662 100644 --- a/chrome/common/service_process_util.cc +++ b/chrome/common/service_process_util.cc @@ -2,12 +2,17 @@ // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. +#include <algorithm> + #include "base/file_util.h" #include "base/logging.h" +#include "base/mac/scoped_nsautorelease_pool.h" #include "base/path_service.h" #include "base/process_util.h" +#include "base/sha1.h" #include "base/singleton.h" #include "base/string16.h" +#include "base/string_number_conversions.h" #include "base/string_util.h" #include "base/utf_string_conversions.h" #include "base/version.h" @@ -34,29 +39,6 @@ std::string GetServiceProcessSharedMemName() { return GetServiceProcessScopedName("_service_shmem"); } -// Reads the named shared memory to get the shared data. Returns false if no -// matching shared memory was found. -bool GetServiceProcessSharedData(std::string* version, base::ProcessId* pid) { - scoped_ptr<base::SharedMemory> shared_mem_service_data; - shared_mem_service_data.reset(new base::SharedMemory()); - ServiceProcessSharedData* service_data = NULL; - if (shared_mem_service_data.get() && - shared_mem_service_data->Open(GetServiceProcessSharedMemName(), true) && - shared_mem_service_data->Map(sizeof(ServiceProcessSharedData))) { - service_data = reinterpret_cast<ServiceProcessSharedData*>( - shared_mem_service_data->memory()); - // Make sure the version in shared memory is null-terminated. If it is not, - // treat it as invalid. - if (version && memchr(service_data->service_process_version, '\0', - sizeof(service_data->service_process_version))) - *version = service_data->service_process_version; - if (pid) - *pid = service_data->service_process_pid; - return true; - } - return false; -} - enum ServiceProcessRunningState { SERVICE_NOT_RUNNING, SERVICE_OLDER_VERSION_RUNNING, @@ -65,12 +47,20 @@ enum ServiceProcessRunningState { }; ServiceProcessRunningState GetServiceProcessRunningState( - std::string* service_version_out) { + std::string* service_version_out, base::ProcessId* pid_out) { std::string version; - GetServiceProcessSharedData(&version, NULL); - if (version.empty()) + if (!GetServiceProcessSharedData(&version, pid_out)) return SERVICE_NOT_RUNNING; +#if defined(OS_POSIX) + // We only need to check for service running on POSIX because Windows cleans + // up shared memory files when an app crashes, so there isn't a chance of + // us reading bogus data from shared memory for an app that has died. + if (!CheckServiceProcessReady()) { + return SERVICE_NOT_RUNNING; + } +#endif // defined(OS_POSIX) + // At this time we have a version string. Set the out param if it exists. if (service_version_out) *service_version_out = version; @@ -105,23 +95,22 @@ ServiceProcessRunningState GetServiceProcessRunningState( return SERVICE_SAME_VERSION_RUNNING; } - } // namespace // Return a name that is scoped to this instance of the service process. We -// use the user-data-dir as a scoping prefix. +// use the hash of the user-data-dir as a scoping prefix. We can't use +// the user-data-dir itself as we have limits on the size of the lock names. std::string GetServiceProcessScopedName(const std::string& append_str) { FilePath user_data_dir; PathService::Get(chrome::DIR_USER_DATA, &user_data_dir); #if defined(OS_WIN) - std::string scoped_name = WideToUTF8(user_data_dir.value()); + std::string user_data_dir_path = WideToUTF8(user_data_dir.value()); #elif defined(OS_POSIX) - std::string scoped_name = user_data_dir.value(); + std::string user_data_dir_path = user_data_dir.value(); #endif // defined(OS_WIN) - std::replace(scoped_name.begin(), scoped_name.end(), '\\', '!'); - std::replace(scoped_name.begin(), scoped_name.end(), '/', '!'); - scoped_name.append(append_str); - return scoped_name; + std::string hash = base::SHA1HashString(user_data_dir_path); + std::string hex_hash = base::HexEncode(hash.c_str(), hash.length()); + return hex_hash + "." + append_str; } // Return a name that is scoped to this instance of the service process. We @@ -141,16 +130,40 @@ std::string GetServiceProcessChannelName() { return GetServiceProcessScopedVersionedName("_service_ipc"); } -base::ProcessId GetServiceProcessPid() { - base::ProcessId pid = 0; - GetServiceProcessSharedData(NULL, &pid); - return pid; +// Reads the named shared memory to get the shared data. Returns false if no +// matching shared memory was found. +bool GetServiceProcessSharedData(std::string* version, base::ProcessId* pid) { + scoped_ptr<base::SharedMemory> shared_mem_service_data; + shared_mem_service_data.reset(new base::SharedMemory()); + ServiceProcessSharedData* service_data = NULL; + if (shared_mem_service_data.get() && + shared_mem_service_data->Open(GetServiceProcessSharedMemName(), true) && + shared_mem_service_data->Map(sizeof(ServiceProcessSharedData))) { + service_data = reinterpret_cast<ServiceProcessSharedData*>( + shared_mem_service_data->memory()); + // Make sure the version in shared memory is null-terminated. If it is not, + // treat it as invalid. + if (version && memchr(service_data->service_process_version, '\0', + sizeof(service_data->service_process_version))) + *version = service_data->service_process_version; + if (pid) + *pid = service_data->service_process_pid; + return true; + } + return false; } ServiceProcessState::ServiceProcessState() : state_(NULL) { } ServiceProcessState::~ServiceProcessState() { + if (shared_mem_service_data_.get()) { + // Delete needs a pool wrapped around it because it calls some Obj-C on Mac, + // and since ServiceProcessState is a singleton, it gets destructed after + // the standard NSAutoreleasePools have already been cleaned up. + base::mac::ScopedNSAutoreleasePool pool; + shared_mem_service_data_->Delete(GetServiceProcessSharedMemName()); + } TearDownState(); } @@ -165,30 +178,26 @@ bool ServiceProcessState::Initialize() { } // Now that we have the singleton, take care of killing an older version, if // it exists. - if (ShouldHandleOtherVersion() && !HandleOtherVersion()) + if (!HandleOtherVersion()) return false; - // TODO(sanjeevr): We can probably use the shared mem as the sole singleton - // mechanism. For that the shared mem class needs to return whether it created - // new instance or opened an existing one. Also shared memory on Linux uses - // a file on disk which is not deleted when the process exits. - - // Now that we have the singleton, let is also write the version we are using - // to shared memory. This can be used by a newer service to signal us to exit. + // Write the version we are using to shared memory. This can be used by a + // newer service to signal us to exit. return CreateSharedData(); } bool ServiceProcessState::HandleOtherVersion() { std::string running_version; + base::ProcessId process_id; ServiceProcessRunningState state = - GetServiceProcessRunningState(&running_version); + GetServiceProcessRunningState(&running_version, &process_id); switch (state) { case SERVICE_SAME_VERSION_RUNNING: case SERVICE_NEWER_VERSION_RUNNING: return false; case SERVICE_OLDER_VERSION_RUNNING: // If an older version is running, kill it. - ForceServiceProcessShutdown(running_version); + ForceServiceProcessShutdown(running_version, process_id); break; case SERVICE_NOT_RUNNING: break; @@ -209,8 +218,8 @@ bool ServiceProcessState::CreateSharedData() { return false; } - scoped_ptr<base::SharedMemory> shared_mem_service_data; - shared_mem_service_data.reset(new base::SharedMemory()); + scoped_ptr<base::SharedMemory> shared_mem_service_data( + new base::SharedMemory()); if (!shared_mem_service_data.get()) return false; @@ -233,8 +242,11 @@ bool ServiceProcessState::CreateSharedData() { return true; } - std::string ServiceProcessState::GetAutoRunKey() { return GetServiceProcessScopedName("_service_run"); } +void ServiceProcessState::SignalStopped() { + TearDownState(); + shared_mem_service_data_.reset(); +} diff --git a/chrome/common/service_process_util.h b/chrome/common/service_process_util.h index 6f2685e..175499d 100644 --- a/chrome/common/service_process_util.h +++ b/chrome/common/service_process_util.h @@ -10,7 +10,12 @@ #include "base/process.h" #include "base/scoped_ptr.h" #include "base/shared_memory.h" -#include "base/task.h" + +class Task; + +namespace base { + class MessageLoopProxy; +} template <typename T> struct DefaultSingletonTraits; @@ -33,16 +38,17 @@ std::string GetServiceProcessScopedVersionedName(const std::string& append_str); // IPC commands. bool CheckServiceProcessReady(); -// Returns the process id of the currently running service process. Returns 0 -// if no service process is running. +// Returns the process id and version of the currently running service process. // Note: DO NOT use this check whether the service process is ready because -// a non-zero return value only means that the process is running and not that -// it is ready to receive IPC commands. This method is only exposed for testing. -base::ProcessId GetServiceProcessPid(); +// a true return value only means that some process shared data was available, +// and not that the process is ready to receive IPC commands, or even running. +// This method is only exposed for testing. +bool GetServiceProcessSharedData(std::string* version, base::ProcessId* pid); // -------------------------------------------------------------------------- // Forces a service process matching the specified version to shut down. -bool ForceServiceProcessShutdown(const std::string& version); +bool ForceServiceProcessShutdown(const std::string& version, + base::ProcessId process_id); // This is a class that is used by the service process to signal events and // share data with external clients. This class lives in this file because the @@ -61,7 +67,10 @@ class ServiceProcessState { // This method is called when the service process is running and initialized. // |shutdown_task| is invoked when we get a shutdown request from another // process (in the same thread that called SignalReady). It can be NULL. - void SignalReady(Task* shutdown_task); + // |message_loop_proxy| must be of type IO and is the loop that POSIX uses + // to monitor the service process. + bool SignalReady( + base::MessageLoopProxy* message_loop_proxy, Task* shutdown_task); // Signal that the service process is stopped. void SignalStopped(); @@ -93,8 +102,6 @@ class ServiceProcessState { // Tear down the platform specific state. void TearDownState(); - // Allows each platform to specify whether it supports killing older versions. - bool ShouldHandleOtherVersion(); // An opaque object that maintains state. The actual definition of this is // platform dependent. struct StateData; diff --git a/chrome/common/service_process_util_posix.cc b/chrome/common/service_process_util_posix.cc index e547223..7deebaa 100644 --- a/chrome/common/service_process_util_posix.cc +++ b/chrome/common/service_process_util_posix.cc @@ -4,14 +4,23 @@ #include "chrome/common/service_process_util.h" +#include <signal.h> +#include <unistd.h> + #include "base/file_util.h" #include "base/logging.h" +#include "base/message_loop.h" +#include "base/message_loop_proxy.h" +#include "base/message_pump_libevent.h" #include "base/path_service.h" #include "chrome/common/chrome_paths.h" #include "chrome/common/chrome_version_info.h" +#include "chrome/common/multi_process_lock.h" namespace { +int g_signal_socket = -1; + // Gets the name of the lock file for service process. FilePath GetServiceProcessLockFilePath() { FilePath user_data_dir; @@ -21,45 +30,181 @@ FilePath GetServiceProcessLockFilePath() { return user_data_dir.Append(lock_file_name); } -} // namespace +// Attempts to take a lock named |name|. If |waiting| is true then this will +// make multiple attempts to acquire the lock. +// Caller is responsible for ownership of the MultiProcessLock. +MultiProcessLock* TakeNamedLock(const std::string& name, bool waiting) { + scoped_ptr<MultiProcessLock> lock(MultiProcessLock::Create(name)); + if (lock == NULL) return NULL; + bool got_lock = false; + for (int i = 0; i < 10; ++i) { + if (lock->TryLock()) { + got_lock = true; + break; + } + if (!waiting) break; + base::PlatformThread::Sleep(100 * i); + } + if (!got_lock) { + lock.reset(); + } + return lock.release(); +} -bool ForceServiceProcessShutdown(const std::string& version) { - NOTIMPLEMENTED(); - return false; +MultiProcessLock* TakeServiceRunningLock(bool waiting) { + std::string lock_name = + GetServiceProcessScopedName("_service_running"); + return TakeNamedLock(lock_name, waiting); } -bool CheckServiceProcessReady() { - const FilePath path = GetServiceProcessLockFilePath(); - return file_util::PathExists(path); +MultiProcessLock* TakeServiceInitializingLock(bool waiting) { + std::string lock_name = + GetServiceProcessScopedName("_service_initializing"); + return TakeNamedLock(lock_name, waiting); } -struct ServiceProcessState::StateData { - // No state yet for Posix. +} // namespace + +// Watches for |kShutDownMessage| to be written to the file descriptor it is +// watching. When it reads |kShutDownMessage|, it performs |shutdown_task_|. +// Used here to monitor the socket listening to g_signal_socket. +class ServiceProcessShutdownMonitor + : public base::MessagePumpLibevent::Watcher { + public: + + enum { + kShutDownMessage = 0xdecea5e + }; + + explicit ServiceProcessShutdownMonitor(Task* shutdown_task) + : shutdown_task_(shutdown_task) { + } + + virtual ~ServiceProcessShutdownMonitor(); + + virtual void OnFileCanReadWithoutBlocking(int fd); + virtual void OnFileCanWriteWithoutBlocking(int fd); + + private: + scoped_ptr<Task> shutdown_task_; }; -bool ServiceProcessState::TakeSingletonLock() { - // TODO(sanjeevr): Implement singleton mechanism for POSIX. +ServiceProcessShutdownMonitor::~ServiceProcessShutdownMonitor() { +} + +void ServiceProcessShutdownMonitor::OnFileCanReadWithoutBlocking(int fd) { + if (shutdown_task_.get()) { + int buffer; + int length = read(fd, &buffer, sizeof(buffer)); + if ((length == sizeof(buffer)) && (buffer == kShutDownMessage)) { + shutdown_task_->Run(); + shutdown_task_.reset(); + } else if (length > 0) { + LOG(ERROR) << "Unexpected read: " << buffer; + } else if (length == 0) { + LOG(ERROR) << "Unexpected fd close"; + } else if (length < 0) { + PLOG(ERROR) << "read"; + } + } +} + +void ServiceProcessShutdownMonitor::OnFileCanWriteWithoutBlocking(int fd) { NOTIMPLEMENTED(); +} + +// "Forced" Shutdowns on POSIX are done via signals. The magic signal for +// a shutdown is SIGTERM. "write" is a signal safe function. PLOG(ERROR) is +// not, but we don't ever expect it to be called. +static void SigTermHandler(int sig, siginfo_t* info, void* uap) { + // TODO(dmaclach): add security here to make sure that we are being shut + // down by an appropriate process. + int message = ServiceProcessShutdownMonitor::kShutDownMessage; + if (write(g_signal_socket, &message, sizeof(message)) < 0) { + PLOG(ERROR) << "write"; + } +} + +// See comment for SigTermHandler. +bool ForceServiceProcessShutdown(const std::string& version, + base::ProcessId process_id) { + if (kill(process_id, SIGTERM) < 0) { + PLOG(ERROR) << "kill"; + return false; + } return true; } -void ServiceProcessState::SignalReady(Task* shutdown_task) { - // TODO(hclam): Implement better mechanism for these platform. - // Also we need to save shutdown task. For now we just delete the shutdown - // task because we have not way to listen for shutdown requests. - delete shutdown_task; - const FilePath path = GetServiceProcessLockFilePath(); - FILE* file = file_util::OpenFile(path, "wb+"); - if (!file) - return; - VLOG(1) << "Created Service Process lock file: " << path.value(); - file_util::TruncateFile(file) && file_util::CloseFile(file); +bool CheckServiceProcessReady() { + scoped_ptr<MultiProcessLock> running_lock(TakeServiceRunningLock(false)); + return running_lock.get() == NULL; } -void ServiceProcessState::SignalStopped() { - const FilePath path = GetServiceProcessLockFilePath(); - file_util::Delete(path, false); - shared_mem_service_data_.reset(); +struct ServiceProcessState::StateData + : public base::RefCountedThreadSafe<ServiceProcessState::StateData> { + scoped_ptr<MultiProcessLock> initializing_lock_; + scoped_ptr<MultiProcessLock> running_lock_; + scoped_ptr<ServiceProcessShutdownMonitor> shut_down_monitor_; + base::MessagePumpLibevent::FileDescriptorWatcher watcher_; + int sockets_[2]; + struct sigaction old_action_; + bool set_action_; + + // WatchFileDescriptor needs to be set up by the thread that is going + // to be monitoring it. + void SignalReady() { + CHECK(MessageLoopForIO::current()->WatchFileDescriptor( + sockets_[0], true, MessageLoopForIO::WATCH_READ, + &watcher_, shut_down_monitor_.get())); + g_signal_socket = sockets_[1]; + + // Set up signal handler for SIGTERM. + struct sigaction action; + action.sa_sigaction = SigTermHandler; + sigemptyset(&action.sa_mask); + action.sa_flags = SA_SIGINFO; + if (sigaction(SIGTERM, &action, &old_action_) == 0) { + // If the old_action is not default, somebody else has installed a + // a competing handler. Our handler is going to override it so it + // won't be called. If this occurs it needs to be fixed. + DCHECK_EQ(old_action_.sa_handler, SIG_DFL); + set_action_ = true; + initializing_lock_.reset(); + } else { + PLOG(ERROR) << "sigaction"; + } + } +}; + +bool ServiceProcessState::TakeSingletonLock() { + CHECK(!state_); + state_ = new StateData; + state_->AddRef(); + state_->sockets_[0] = -1; + state_->sockets_[1] = -1; + state_->set_action_ = false; + state_->initializing_lock_.reset(TakeServiceInitializingLock(true)); + return state_->initializing_lock_.get(); +} + +bool ServiceProcessState::SignalReady( + base::MessageLoopProxy* message_loop_proxy, Task* shutdown_task) { + CHECK(state_); + CHECK_EQ(g_signal_socket, -1); + + state_->running_lock_.reset(TakeServiceRunningLock(true)); + if (state_->running_lock_.get() == NULL) { + return false; + } + state_->shut_down_monitor_.reset( + new ServiceProcessShutdownMonitor(shutdown_task)); + if (pipe(state_->sockets_) < 0) { + PLOG(ERROR) << "pipe"; + return false; + } + message_loop_proxy->PostTask(FROM_HERE, + NewRunnableMethod(state_, &ServiceProcessState::StateData::SignalReady)); + return true; } bool ServiceProcessState::AddToAutoRun() { @@ -73,11 +218,20 @@ bool ServiceProcessState::RemoveFromAutoRun() { } void ServiceProcessState::TearDownState() { + g_signal_socket = -1; + if (state_) { + if (state_->sockets_[0] != -1) { + close(state_->sockets_[0]); + } + if (state_->sockets_[1] != -1) { + close(state_->sockets_[1]); + } + if (state_->set_action_) { + if (sigaction(SIGTERM, &state_->old_action_, NULL) < 0) { + PLOG(ERROR) << "sigaction"; + } + } + state_->Release(); + state_ = NULL; + } } - -bool ServiceProcessState::ShouldHandleOtherVersion() { - // On POSIX, the shared memory is a file in disk. We may have a stale file - // lying around from a previous run. So the check is not reliable. - return false; -} - diff --git a/chrome/common/service_process_util_unittest.cc b/chrome/common/service_process_util_unittest.cc index 58b68e1..ad6b257 100644 --- a/chrome/common/service_process_util_unittest.cc +++ b/chrome/common/service_process_util_unittest.cc @@ -5,10 +5,25 @@ #include "base/at_exit.h" #include "base/process_util.h" #include "base/string_util.h" +#include "base/test/multiprocess_test.h" +#include "base/test/test_timeouts.h" +#include "base/threading/thread.h" #include "chrome/common/chrome_version_info.h" #include "chrome/common/service_process_util.h" -#include "testing/gtest/include/gtest/gtest.h" +#include "testing/multiprocess_func_list.h" +namespace { + +bool g_good_shutdown = false; + +void ShutdownTask(MessageLoop* loop) { + // Quit the main message loop. + ASSERT_FALSE(g_good_shutdown); + g_good_shutdown = true; + loop->PostTask(FROM_HERE, new MessageLoop::QuitTask()); +} + +} // namespace TEST(ServiceProcessUtilTest, ScopedVersionedName) { std::string test_str = "test"; @@ -19,55 +34,126 @@ TEST(ServiceProcessUtilTest, ScopedVersionedName) { EXPECT_NE(std::string::npos, scoped_name.find(version_info.Version())); } -class ServiceProcessStateTest : public testing::Test { +class ServiceProcessStateTest : public base::MultiProcessTest { + public: + ServiceProcessStateTest(); + ~ServiceProcessStateTest(); + virtual void SetUp(); + base::MessageLoopProxy* IOMessageLoopProxy() { + return io_thread_.message_loop_proxy(); + } + void LaunchAndWait(const std::string& name); + private: // This is used to release the ServiceProcessState singleton after each test. base::ShadowingAtExitManager at_exit_manager_; + base::Thread io_thread_; }; -#if defined(OS_WIN) -// Singleton-ness is only implemented on Windows. -// TODO(sanjeev): Rewrite this test to spawn a new process and test using the -// ServiceProcessState singleton across processes. -/* +ServiceProcessStateTest::ServiceProcessStateTest() + : io_thread_("ServiceProcessStateTestThread") { +} + +ServiceProcessStateTest::~ServiceProcessStateTest() { +} + +void ServiceProcessStateTest::SetUp() { + base::Thread::Options options(MessageLoop::TYPE_IO, 0); + ASSERT_TRUE(io_thread_.StartWithOptions(options)); +} + +void ServiceProcessStateTest::LaunchAndWait(const std::string& name) { + base::ProcessHandle handle = SpawnChild(name, false); + ASSERT_TRUE(handle); + int exit_code = 0; + ASSERT_TRUE(base::WaitForExitCode(handle, &exit_code)); + ASSERT_EQ(exit_code, 0); +} + TEST_F(ServiceProcessStateTest, Singleton) { - ServiceProcessState state; - EXPECT_TRUE(state.Initialize()); - // The second instance should fail to Initialize. - ServiceProcessState another_state; - EXPECT_FALSE(another_state.Initialize()); + ServiceProcessState* state = ServiceProcessState::GetInstance(); + ASSERT_TRUE(state->Initialize()); + LaunchAndWait("ServiceProcessStateTestSingleton"); } -*/ -#endif // defined(OS_WIN) TEST_F(ServiceProcessStateTest, ReadyState) { -#if defined(OS_WIN) - // On Posix, we use a lock file on disk to signal readiness. This lock file - // could be lying around from previous crashes which could cause - // CheckServiceProcessReady to lie. On Windows, we use a named event so we - // don't have this issue. Until we have a more stable signalling mechanism on - // Posix, this check will only execute on Windows. - EXPECT_FALSE(CheckServiceProcessReady()); -#endif // defined(OS_WIN) + ASSERT_FALSE(CheckServiceProcessReady()); ServiceProcessState* state = ServiceProcessState::GetInstance(); - EXPECT_TRUE(state->Initialize()); - state->SignalReady(NULL); - EXPECT_TRUE(CheckServiceProcessReady()); + ASSERT_TRUE(state->Initialize()); + ASSERT_TRUE(state->SignalReady(IOMessageLoopProxy(), NULL)); + LaunchAndWait("ServiceProcessStateTestReadyTrue"); state->SignalStopped(); - EXPECT_FALSE(CheckServiceProcessReady()); + LaunchAndWait("ServiceProcessStateTestReadyFalse"); } TEST_F(ServiceProcessStateTest, SharedMem) { + std::string version; + base::ProcessId pid; #if defined(OS_WIN) // On Posix, named shared memory uses a file on disk. This file // could be lying around from previous crashes which could cause // GetServiceProcessPid to lie. On Windows, we use a named event so we // don't have this issue. Until we have a more stable shared memory // implementation on Posix, this check will only execute on Windows. - EXPECT_EQ(0, GetServiceProcessPid()); + ASSERT_FALSE(GetServiceProcessSharedData(&version, &pid)); #endif // defined(OS_WIN) ServiceProcessState* state = ServiceProcessState::GetInstance(); + ASSERT_TRUE(state->Initialize()); + ASSERT_TRUE(GetServiceProcessSharedData(&version, &pid)); + ASSERT_EQ(base::GetCurrentProcId(), pid); +} + +TEST_F(ServiceProcessStateTest, ForceShutdown) { + base::ProcessHandle handle = SpawnChild("ServiceProcessStateTestShutdown", + true); + ASSERT_TRUE(handle); + for (int i = 0; !CheckServiceProcessReady() && i < 10; ++i) { + base::PlatformThread::Sleep(TestTimeouts::tiny_timeout_ms()); + } + ASSERT_TRUE(CheckServiceProcessReady()); + std::string version; + base::ProcessId pid; + ASSERT_TRUE(GetServiceProcessSharedData(&version, &pid)); + ASSERT_TRUE(ForceServiceProcessShutdown(version, pid)); + int exit_code = 0; + ASSERT_TRUE(base::WaitForExitCodeWithTimeout(handle, + &exit_code, TestTimeouts::action_timeout_ms() * 2)); + ASSERT_EQ(exit_code, 0); +} + +MULTIPROCESS_TEST_MAIN(ServiceProcessStateTestSingleton) { + ServiceProcessState* state = ServiceProcessState::GetInstance(); + EXPECT_FALSE(state->Initialize()); + return 0; +} + +MULTIPROCESS_TEST_MAIN(ServiceProcessStateTestReadyTrue) { + EXPECT_TRUE(CheckServiceProcessReady()); + return 0; +} + +MULTIPROCESS_TEST_MAIN(ServiceProcessStateTestReadyFalse) { + EXPECT_FALSE(CheckServiceProcessReady()); + return 0; +} + +MULTIPROCESS_TEST_MAIN(ServiceProcessStateTestShutdown) { + MessageLoop message_loop; + message_loop.set_thread_name("ServiceProcessStateTestShutdownMainThread"); + base::Thread io_thread_("ServiceProcessStateTestShutdownIOThread"); + base::Thread::Options options(MessageLoop::TYPE_IO, 0); + EXPECT_TRUE(io_thread_.StartWithOptions(options)); + ServiceProcessState* state = ServiceProcessState::GetInstance(); EXPECT_TRUE(state->Initialize()); - EXPECT_EQ(base::GetCurrentProcId(), GetServiceProcessPid()); + EXPECT_TRUE(state->SignalReady(io_thread_.message_loop_proxy(), + NewRunnableFunction(&ShutdownTask, + MessageLoop::current()))); + message_loop.PostDelayedTask(FROM_HERE, + new MessageLoop::QuitTask(), + TestTimeouts::action_max_timeout_ms()); + EXPECT_FALSE(g_good_shutdown); + message_loop.Run(); + EXPECT_TRUE(g_good_shutdown); + return 0; } diff --git a/chrome/common/service_process_util_win.cc b/chrome/common/service_process_util_win.cc index eb784a5..f9a1816 100644 --- a/chrome/common/service_process_util_win.cc +++ b/chrome/common/service_process_util_win.cc @@ -9,6 +9,7 @@ #include "base/logging.h" #include "base/path_service.h" #include "base/string16.h" +#include "base/task.h" #include "base/utf_string_conversions.h" #include "base/win/object_watcher.h" #include "base/win/scoped_handle.h" @@ -54,7 +55,8 @@ class ServiceProcessShutdownMonitor } // namespace -bool ForceServiceProcessShutdown(const std::string& version) { +bool ForceServiceProcessShutdown(const std::string& version, + base::ProcessId process_id) { base::win::ScopedHandle shutdown_event; std::string versioned_name = version; versioned_name.append("_service_shutdown_evt"); @@ -99,20 +101,19 @@ bool ServiceProcessState::TakeSingletonLock() { return true; } -void ServiceProcessState::SignalReady(Task* shutdown_task) { +bool ServiceProcessState::SignalReady( + base::MessageLoopProxy* message_loop_proxy, Task* shutdown_task) { DCHECK(state_); DCHECK(state_->ready_event.IsValid()); - SetEvent(state_->ready_event.Get()); + if (!SetEvent(state_->ready_event.Get())) { + return false; + } if (shutdown_task) { state_->shutdown_monitor.reset( new ServiceProcessShutdownMonitor(shutdown_task)); state_->shutdown_monitor->Start(); } -} - -void ServiceProcessState::SignalStopped() { - TearDownState(); - shared_mem_service_data_.reset(); + return true; } bool ServiceProcessState::AddToAutoRun() { @@ -140,7 +141,3 @@ void ServiceProcessState::TearDownState() { delete state_; state_ = NULL; } - -bool ServiceProcessState::ShouldHandleOtherVersion() { - return true; -} diff --git a/chrome/common/socket_stream_dispatcher.cc b/chrome/common/socket_stream_dispatcher.cc index af95d5c..a7e484a 100644 --- a/chrome/common/socket_stream_dispatcher.cc +++ b/chrome/common/socket_stream_dispatcher.cc @@ -141,10 +141,10 @@ void IPCWebSocketStreamHandleBridge::DoConnect(const GURL& url) { socket_id_ = all_bridges.Add(this); DCHECK_NE(socket_id_, chrome_common_net::kNoSocketId); + AddRef(); // Released in OnClosed(). if (child_thread_->Send( new ViewHostMsg_SocketStream_Connect(url, socket_id_))) { DVLOG(1) << "Connect socket_id=" << socket_id_; - AddRef(); // Released in OnClosed(). // TODO(ukai): timeout to OnConnected. } else { LOG(ERROR) << "IPC SocketStream_Connect failed."; diff --git a/chrome/common/socket_stream_dispatcher.h b/chrome/common/socket_stream_dispatcher.h index 01c5421..38da8a6 100644 --- a/chrome/common/socket_stream_dispatcher.h +++ b/chrome/common/socket_stream_dispatcher.h @@ -27,14 +27,14 @@ class WebSocketStreamHandleDelegate; class SocketStreamDispatcher : public IPC::Channel::Listener { public: SocketStreamDispatcher(); - ~SocketStreamDispatcher() {} + virtual ~SocketStreamDispatcher() {} static webkit_glue::WebSocketStreamHandleBridge* CreateBridge( WebKit::WebSocketStreamHandle* handle, webkit_glue::WebSocketStreamHandleDelegate* delegate); // IPC::Channel::Listener implementation. - bool OnMessageReceived(const IPC::Message& msg); + virtual bool OnMessageReceived(const IPC::Message& msg); private: void OnConnected(int socket_id, int max_amount_send_allowed); diff --git a/chrome/common/speech_input_messages.cc b/chrome/common/speech_input_messages.cc new file mode 100644 index 0000000..c93062f --- /dev/null +++ b/chrome/common/speech_input_messages.cc @@ -0,0 +1,83 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "chrome/common/common_param_traits.h" + +#define IPC_MESSAGE_IMPL +#include "chrome/common/speech_input_messages.h" + +SpeechInputHostMsg_StartRecognition_Params:: +SpeechInputHostMsg_StartRecognition_Params() + : render_view_id(0), + request_id(0) { +} + +SpeechInputHostMsg_StartRecognition_Params:: +~SpeechInputHostMsg_StartRecognition_Params() { +} + +namespace IPC { + +void ParamTraits<speech_input::SpeechInputResultItem>::Write( + Message* m, const param_type& p) { + WriteParam(m, p.utterance); + WriteParam(m, p.confidence); +} + +bool ParamTraits<speech_input::SpeechInputResultItem>::Read(const Message* m, + void** iter, + param_type* p) { + return ReadParam(m, iter, &p->utterance) && + ReadParam(m, iter, &p->confidence); +} + +void ParamTraits<speech_input::SpeechInputResultItem>::Log(const param_type& p, + std::string* l) { + l->append("("); + LogParam(p.utterance, l); + l->append(":"); + LogParam(p.confidence, l); + l->append(")"); +} + +void ParamTraits<SpeechInputHostMsg_StartRecognition_Params>::Write( + Message* m, + const param_type& p) { + WriteParam(m, p.render_view_id); + WriteParam(m, p.request_id); + WriteParam(m, p.element_rect); + WriteParam(m, p.language); + WriteParam(m, p.grammar); + WriteParam(m, p.origin_url); +} + +bool ParamTraits<SpeechInputHostMsg_StartRecognition_Params>::Read( + const Message* m, void** iter, param_type* p) { + return + ReadParam(m, iter, &p->render_view_id) && + ReadParam(m, iter, &p->request_id) && + ReadParam(m, iter, &p->element_rect) && + ReadParam(m, iter, &p->language) && + ReadParam(m, iter, &p->grammar) && + ReadParam(m, iter, &p->origin_url); +} + +void ParamTraits<SpeechInputHostMsg_StartRecognition_Params>::Log( + const param_type& p, std::string* l) { + l->append("("); + LogParam(p.render_view_id, l); + l->append(", "); + LogParam(p.request_id, l); + l->append(", "); + LogParam(p.element_rect, l); + l->append(", "); + LogParam(p.language, l); + l->append(", "); + LogParam(p.grammar, l); + l->append(", "); + LogParam(p.origin_url, l); + l->append(")"); +} + +} // namespace IPC diff --git a/chrome/common/speech_input_messages.h b/chrome/common/speech_input_messages.h new file mode 100644 index 0000000..c46ac02 --- /dev/null +++ b/chrome/common/speech_input_messages.h @@ -0,0 +1,93 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef CHROME_COMMON_SPEECH_INPUT_MESSAGES_H_ +#define CHROME_COMMON_SPEECH_INPUT_MESSAGES_H_ +#pragma once + +#include "chrome/common/speech_input_result.h" +#include "ipc/ipc_message_macros.h" +#include "ipc/ipc_param_traits.h" +#include "ui/gfx/rect.h" + +#define IPC_MESSAGE_START SpeechInputMsgStart + +namespace speech_input { +struct SpeechInputResultItem; +} + +// Used to start a speech recognition session. +struct SpeechInputHostMsg_StartRecognition_Params { + SpeechInputHostMsg_StartRecognition_Params(); + ~SpeechInputHostMsg_StartRecognition_Params(); + + int render_view_id; // The render view requesting speech recognition. + int request_id; // Request ID used within the render view. + gfx::Rect element_rect; // Position of the UI element in page coordinates. + std::string language; // Language to use for speech recognition. + std::string grammar; // Speech grammar given by the speech input element. + std::string origin_url; // URL of the page (or iframe if applicable). +}; + +namespace IPC { + +template <> +struct ParamTraits<speech_input::SpeechInputResultItem> { + typedef speech_input::SpeechInputResultItem param_type; + static void Write(Message* m, const param_type& p); + static bool Read(const Message* m, void** iter, param_type* p); + static void Log(const param_type& p, std::string* l); +}; + +template <> +struct ParamTraits<SpeechInputHostMsg_StartRecognition_Params> { + typedef SpeechInputHostMsg_StartRecognition_Params param_type; + static void Write(Message* m, const param_type& p); + static bool Read(const Message* m, void** iter, param_type* p); + static void Log(const param_type& p, std::string* l); +}; + +} // namespace IPC + +// Speech input messages sent from the renderer to the browser. + +// Requests the speech input service to start speech recognition on behalf of +// the given |render_view_id|. +IPC_MESSAGE_CONTROL1(SpeechInputHostMsg_StartRecognition, + SpeechInputHostMsg_StartRecognition_Params) + +// Requests the speech input service to cancel speech recognition on behalf of +// the given |render_view_id|. If speech recognition is not happening or +// is happening on behalf of some other render view, this call does nothing. +IPC_MESSAGE_CONTROL2(SpeechInputHostMsg_CancelRecognition, + int /* render_view_id */, + int /* request_id */) + +// Requests the speech input service to stop audio recording on behalf of +// the given |render_view_id|. Any audio recorded so far will be fed to the +// speech recognizer. If speech recognition is not happening nor or is +// happening on behalf of some other render view, this call does nothing. +IPC_MESSAGE_CONTROL2(SpeechInputHostMsg_StopRecording, + int /* render_view_id */, + int /* request_id */) + +// Speech input messages sent from the browser to the renderer. + +// Relay a speech recognition result, either partial or final. +IPC_MESSAGE_ROUTED2(SpeechInputMsg_SetRecognitionResult, + int /* request_id */, + speech_input::SpeechInputResultArray /* result */) + +// Indicate that speech recognizer has stopped recording and started +// recognition. +IPC_MESSAGE_ROUTED1(SpeechInputMsg_RecordingComplete, + int /* request_id */) + +// Indicate that speech recognizer has completed recognition. This will be +// the last message sent in response to a +// ViewHostMsg_SpeechInput_StartRecognition. +IPC_MESSAGE_ROUTED1(SpeechInputMsg_RecognitionComplete, + int /* request_id */) + +#endif // CHROME_COMMON_SPEECH_INPUT_MESSAGES_H_ diff --git a/chrome/common/spellcheck_common.cc b/chrome/common/spellcheck_common.cc index c52dcba..33234dc 100644 --- a/chrome/common/spellcheck_common.cc +++ b/chrome/common/spellcheck_common.cc @@ -1,4 +1,4 @@ -// Copyright (c) 2009 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -73,9 +73,6 @@ FilePath GetVersionedFileName(const std::string& input_language, // with additional words found by the translation team. static const char kDefaultVersionString[] = "-1-2"; - // The following dictionaries have either not been augmented with additional - // words (version 1-1) or have new words, as well as an upgraded dictionary - // as of Feb 2009 (version 1-3). static const struct { // The language input. const char* language; @@ -83,9 +80,7 @@ FilePath GetVersionedFileName(const std::string& input_language, // The corresponding version. const char* version; } special_version_string[] = { - {"en-AU", "-1-1"}, - {"en-GB", "-1-1"}, - {"es-ES", "-1-1"}, + {"es-ES", "-1-1"}, // 1-1: Have not been augmented with addtional words. {"nl-NL", "-1-1"}, {"sv-SE", "-1-1"}, {"he-IL", "-1-1"}, @@ -93,14 +88,15 @@ FilePath GetVersionedFileName(const std::string& input_language, {"hi-IN", "-1-1"}, {"tr-TR", "-1-1"}, {"et-EE", "-1-1"}, - {"fr-FR", "-2-0"}, // Hunspell fr(modern) 3.7 + Chromium delta. - {"lt-LT", "-1-3"}, + {"lt-LT", "-1-3"}, // 1-3 (Feb 2009): new words, as well as an upgraded + // dictionary. {"pl-PL", "-1-3"}, + {"fr-FR", "-2-0"}, // 2-0 (2010): upgraded dictionaries. {"hu-HU", "-2-0"}, {"ro-RO", "-2-0"}, {"ru-RU", "-2-0"}, {"bg-BG", "-2-0"}, - {"sr", "-2-0"}, + {"sr", "-2-0"}, {"uk-UA", "-2-0"}, }; diff --git a/chrome/common/sqlite_utils.cc b/chrome/common/sqlite_utils.cc index 9d16c7f..15ae2c2 100644 --- a/chrome/common/sqlite_utils.cc +++ b/chrome/common/sqlite_utils.cc @@ -7,11 +7,11 @@ #include <list> #include "base/file_path.h" -#include "base/lock.h" #include "base/lazy_instance.h" #include "base/logging.h" #include "base/stl_util-inl.h" #include "base/string16.h" +#include "base/synchronization/lock.h" // The vanilla error handler implements the common fucntionality for all the // error handlers. Specialized error handlers are expected to only override @@ -67,13 +67,13 @@ class DefaultSQLErrorHandlerFactory : public SQLErrorHandlerFactory { private: void AddHandler(SQLErrorHandler* handler) { - AutoLock lock(lock_); + base::AutoLock lock(lock_); errors_.push_back(handler); } typedef std::list<SQLErrorHandler*> ErrorList; ErrorList errors_; - Lock lock_; + base::Lock lock_; }; static base::LazyInstance<DefaultSQLErrorHandlerFactory> diff --git a/chrome/common/switch_utils_unittest.cc b/chrome/common/switch_utils_unittest.cc index 2c73b17..46a17d6 100644 --- a/chrome/common/switch_utils_unittest.cc +++ b/chrome/common/switch_utils_unittest.cc @@ -5,7 +5,6 @@ #include "chrome/common/switch_utils.h" #include "base/command_line.h" -#include "chrome/common/chrome_switches.h" #include "testing/gtest/include/gtest/gtest.h" TEST(SwitchUtilsTest, RemoveSwitches) { diff --git a/chrome/common/thumbnail_score.cc b/chrome/common/thumbnail_score.cc index dc7856d..f878e31 100644 --- a/chrome/common/thumbnail_score.cc +++ b/chrome/common/thumbnail_score.cc @@ -5,12 +5,15 @@ #include "chrome/common/thumbnail_score.h" #include "base/logging.h" +#include "base/stringprintf.h" using base::Time; using base::TimeDelta; const TimeDelta ThumbnailScore::kUpdateThumbnailTime = TimeDelta::FromDays(1); const double ThumbnailScore::kThumbnailMaximumBoringness = 0.94; +// Per crbug.com/65936#c4, 91.83% of thumbnail scores are less than 0.70. +const double ThumbnailScore::kThumbnailInterestingEnoughBoringness = 0.70; const double ThumbnailScore::kThumbnailDegradePerHour = 0.01; // Calculates a numeric score from traits about where a snapshot was @@ -70,6 +73,16 @@ bool ThumbnailScore::Equals(const ThumbnailScore& rhs) const { redirect_hops_from_dest == rhs.redirect_hops_from_dest; } +std::string ThumbnailScore::ToString() const { + return StringPrintf("boring_score: %f, at_top %d, good_clipping %d, " + "time_at_snapshot: %f, redirect_hops_from_dest: %d", + boring_score, + at_top, + good_clipping, + time_at_snapshot.ToDoubleT(), + redirect_hops_from_dest); +} + bool ShouldReplaceThumbnailWith(const ThumbnailScore& current, const ThumbnailScore& replacement) { int current_type = GetThumbnailType(current.good_clipping, current.at_top); @@ -116,3 +129,16 @@ bool ShouldReplaceThumbnailWith(const ThumbnailScore& current, return current.boring_score >= ThumbnailScore::kThumbnailMaximumBoringness && replacement.boring_score < ThumbnailScore::kThumbnailMaximumBoringness; } + +bool ThumbnailScore::ShouldConsiderUpdating() { + const TimeDelta time_elapsed = Time::Now() - time_at_snapshot; + // Consider the current thumbnail to be new and interesting enough if + // the following critera are met. + const bool new_and_interesting_enough = + (time_elapsed < kUpdateThumbnailTime && + good_clipping && at_top && + boring_score < kThumbnailInterestingEnoughBoringness); + // We want to generate a new thumbnail when the current thumbnail is + // sufficiently old or uninteresting. + return !new_and_interesting_enough; +} diff --git a/chrome/common/thumbnail_score.h b/chrome/common/thumbnail_score.h index 30bcf8f..39fe0e2 100644 --- a/chrome/common/thumbnail_score.h +++ b/chrome/common/thumbnail_score.h @@ -6,6 +6,7 @@ #define CHROME_COMMON_THUMBNAIL_SCORE_H_ #pragma once +#include <string> #include "base/time.h" // A set of metadata about a Thumbnail. @@ -27,6 +28,9 @@ struct ThumbnailScore { // Tests for equivalence between two ThumbnailScore objects. bool Equals(const ThumbnailScore& rhs) const; + // Returns string representation of this object. + std::string ToString() const; + // How "boring" a thumbnail is. The boring score is the 0,1 ranged // percentage of pixels that are the most common luma. Higher boring // scores indicate that a higher percentage of a bitmap are all the @@ -67,6 +71,10 @@ struct ThumbnailScore { // How bad a thumbnail needs to be before we completely ignore it. static const double kThumbnailMaximumBoringness; + // We consider a thumbnail interesting enough if the boring score is + // lower than this. + static const double kThumbnailInterestingEnoughBoringness; + // Time before we take a worse thumbnail (subject to // kThumbnailMaximumBoringness) over what's currently in the database // for freshness. @@ -74,6 +82,11 @@ struct ThumbnailScore { // Penalty of how much more boring a thumbnail should be per hour. static const double kThumbnailDegradePerHour; + + // Checks whether we should consider updating a new thumbnail based on + // this score. For instance, we don't have to update a new thumbnail + // if the current thumbnail is new and interesting enough. + bool ShouldConsiderUpdating(); }; // Checks whether we should replace one thumbnail with another. diff --git a/chrome/common/thumbnail_score_unittest.cc b/chrome/common/thumbnail_score_unittest.cc index 14d79dd..1defee3 100644 --- a/chrome/common/thumbnail_score_unittest.cc +++ b/chrome/common/thumbnail_score_unittest.cc @@ -52,3 +52,27 @@ TEST(ThumbnailScoreTest, RedirectCount) { lotsa_redirects.redirect_hops_from_dest = 4; EXPECT_FALSE(ShouldReplaceThumbnailWith(no_redirects, lotsa_redirects)); } + +TEST(ThumbnailScoreTest, ShouldConsiderUpdating) { + ThumbnailScore score; + // By default, the score is 1.0, meaning very boring, thus we should + // generate a new thumbnail. + EXPECT_DOUBLE_EQ(1.0, score.boring_score); + EXPECT_TRUE(score.ShouldConsiderUpdating()); + + // Make it very interesting, but this is not enough. + score.boring_score = 0.0; + EXPECT_TRUE(score.ShouldConsiderUpdating()); + + // good_clipping is important, but sill not enough. + score.good_clipping = true; + EXPECT_TRUE(score.ShouldConsiderUpdating()); + + // at_top is important. Finally, the thumbnail is new and interesting enough. + score.at_top = true; + EXPECT_FALSE(score.ShouldConsiderUpdating()); + + // Make it old. Then, it's no longer new enough. + score.time_at_snapshot -= ThumbnailScore::kUpdateThumbnailTime; + EXPECT_TRUE(score.ShouldConsiderUpdating()); +} diff --git a/chrome/common/time_format.cc b/chrome/common/time_format.cc index 9de3a40..249aae2 100644 --- a/chrome/common/time_format.cc +++ b/chrome/common/time_format.cc @@ -6,7 +6,6 @@ #include <vector> -#include "app/l10n_util.h" #include "base/lazy_instance.h" #include "base/logging.h" #include "base/scoped_ptr.h" @@ -15,6 +14,7 @@ #include "base/time.h" #include "base/utf_string_conversions.h" #include "grit/generated_resources.h" +#include "ui/base/l10n/l10n_util.h" #include "unicode/datefmt.h" #include "unicode/locid.h" #include "unicode/plurfmt.h" diff --git a/chrome/common/url_constants.cc b/chrome/common/url_constants.cc index e4c56fc..719ffd4 100644 --- a/chrome/common/url_constants.cc +++ b/chrome/common/url_constants.cc @@ -1,5 +1,4 @@ - -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -18,6 +17,7 @@ const char kChromeUIScheme[] = "chrome"; const char kDataScheme[] = "data"; const char kExtensionScheme[] = "chrome-extension"; const char kFileScheme[] = "file"; +const char kFileSystemScheme[] = "filesystem"; const char kFtpScheme[] = "ftp"; const char kGearsScheme[] = "gears"; const char kHttpScheme[] = "http"; @@ -51,6 +51,7 @@ const char kAboutBlankURL[] = "about:blank"; const char kAboutCacheURL[] = "about:cache"; const char kAboutConflicts[] = "about:conflicts"; const char kAboutCrashURL[] = "about:crash"; +const char kAboutKillURL[] = "about:kill"; const char kAboutCreditsURL[] = "about:credits"; const char kAboutDNSURL[] = "about:dns"; const char kAboutFlagsURL[] = "about:flags"; @@ -63,6 +64,8 @@ const char kAboutMemoryURL[] = "about:memory"; const char kAboutNetInternalsURL[] = "about:net-internals"; const char kAboutPluginsURL[] = "about:plugins"; const char kAboutShorthangURL[] = "about:shorthang"; +const char kAboutSyncURL[] = "about:sync"; +const char kAboutSyncInternalsURL[] = "about:sync-internals"; const char kAboutTermsURL[] = "about:terms"; const char kAboutVaporwareURL[] = "about:vaporware"; const char kAboutVersionURL[] = "about:version"; @@ -96,6 +99,7 @@ const char kChromeUITextfieldsURL[] = "chrome://textfields/"; #if defined(OS_CHROMEOS) const char kChromeUIAboutOSCreditsURL[] = "chrome://about/os-credits"; +const char kChromeUIActivationMessage[] = "chrome://activationmessage/"; const char kChromeUIFileBrowseURL[] = "chrome://filebrowse/"; const char kChromeUIImageBurnerURL[] = "chrome://imageburner/"; const char kChromeUIKeyboardOverlayURL[] = "chrome://keyboardoverlay/"; @@ -131,12 +135,14 @@ const char kChromeUIRemotingResourcesHost[] = "remotingresources"; const char kChromeUIResourcesHost[] = "resources"; const char kChromeUIScreenshotPath[] = "screenshots"; const char kChromeUISettingsHost[] = "settings"; +const char kChromeUISyncInternalsHost[] = "sync-internals"; const char kChromeUISyncResourcesHost[] = "syncresources"; const char kChromeUITextfieldsHost[] = "textfields"; const char kChromeUIThemePath[] = "theme"; const char kChromeUIThumbnailPath[] = "thumb"; #if defined(OS_CHROMEOS) +const char kChromeUIActivationMessageHost[] = "activationmessage"; const char kChromeUIFileBrowseHost[] = "filebrowse"; const char kChromeUIImageBurnerHost[] = "imageburner"; const char kChromeUIKeyboardOverlayHost[] = "keyboardoverlay"; @@ -163,6 +169,8 @@ const char kCloudPrintSetupHost[] = "cloudprintsetup"; const char kNetworkViewInternalsURL[] = "chrome://net-internals/"; const char kNetworkViewCacheURL[] = "chrome://view-http-cache/"; +const char kSyncViewInternalsURL[] = "chrome://sync-internals/"; + // GPU sub pages const char kGpuInternalsURL[] = "chrome://gpu-internals/"; @@ -172,6 +180,7 @@ const char kAutoFillSubPage[] = "autoFillOptions"; const char kBrowserOptionsSubPage[] = "browser"; const char kClearBrowserDataSubPage[] = "clearBrowserDataOverlay"; const char kContentSettingsSubPage[] = "content"; +const char kContentSettingsExceptionsSubPage[] = "contentExceptions"; const char kDefaultOptionsSubPage[] = ""; const char kImportDataSubPage[] = "importDataOverlay"; const char kPersonalOptionsSubPage[] = "personal"; @@ -204,6 +213,15 @@ const char kCrashReasonURL[] = "http://www.google.com/support/chrome/bin/answer.py?answer=95669"; #endif +// TODO: These are currently placeholders that point to the crash +// docs. See bug http://crosbug.com/10711 +const char kKillReasonURL[] = +#if defined(OS_CHROMEOS) + "http://www.google.com/support/chromeos/bin/answer.py?answer=1047340"; +#else + "http://www.google.com/support/chrome/bin/answer.py?answer=95669"; +#endif + const char kPrivacyLearnMoreURL[] = #if defined(OS_CHROMEOS) "http://www.google.com/support/chromeos/bin/answer.py?answer=1047334"; @@ -214,7 +232,10 @@ const char kPrivacyLearnMoreURL[] = const char kChromiumProjectURL[] = "http://code.google.com/chromium/"; const char kLearnMoreReportingURL[] = - "http://www.google.com/support/chrome/bin/answer.py?answer=96817&"; + "http://www.google.com/support/chrome/bin/answer.py?answer=96817"; + +const char kOutdatedPluginLearnMoreURL[] = + "http://www.google.com/support/chrome/bin/answer.py?answer=1181003"; void RegisterChromeSchemes() { // Don't need "chrome-internal" which was used in old versions of Chrome for diff --git a/chrome/common/url_constants.h b/chrome/common/url_constants.h index 50d1a5c..6bc0165 100644 --- a/chrome/common/url_constants.h +++ b/chrome/common/url_constants.h @@ -1,4 +1,4 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. +// Copyright (c) 2011 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. @@ -15,11 +15,12 @@ extern const char kAboutScheme[]; extern const char kBlobScheme[]; extern const char kChromeDevToolsScheme[]; extern const char kChromeInternalScheme[]; -extern const char kChromeUIScheme[]; // The scheme used for DOMUIs. +extern const char kChromeUIScheme[]; // The scheme used for WebUIs. extern const char kCrosScheme[]; // The scheme used for ChromeOS. extern const char kDataScheme[]; extern const char kExtensionScheme[]; extern const char kFileScheme[]; +extern const char kFileSystemScheme[]; extern const char kFtpScheme[]; extern const char kGearsScheme[]; extern const char kHttpScheme[]; @@ -44,6 +45,7 @@ extern const char kAboutBrowserCrash[]; extern const char kAboutConflicts[]; extern const char kAboutCacheURL[]; extern const char kAboutCrashURL[]; +extern const char kAboutKillURL[]; extern const char kAboutCreditsURL[]; extern const char kAboutDNSURL[]; extern const char kAboutFlagsURL[]; @@ -56,6 +58,8 @@ extern const char kAboutMemoryURL[]; extern const char kAboutNetInternalsURL[]; extern const char kAboutPluginsURL[]; extern const char kAboutShorthangURL[]; +extern const char kAboutSyncURL[]; +extern const char kAboutSyncInternalsURL[]; extern const char kAboutTermsURL[]; extern const char kAboutVaporwareURL[]; extern const char kAboutVersionURL[]; @@ -87,6 +91,7 @@ extern const char kChromeUITextfieldsURL[]; #if defined(OS_CHROMEOS) extern const char kChromeUIAboutOSCreditsURL[]; +extern const char kChromeUIActivationMessage[]; extern const char kChromeUIFileBrowseURL[]; extern const char kChromeUIImageBurnerURL[]; extern const char kChromeUIKeyboardOverlayURL[]; @@ -122,12 +127,14 @@ extern const char kChromeUIRemotingResourcesHost[]; extern const char kChromeUIResourcesHost[]; extern const char kChromeUIScreenshotPath[]; extern const char kChromeUISettingsHost[]; +extern const char kChromeUISyncInternalsHost[]; extern const char kChromeUISyncResourcesHost[]; extern const char kChromeUITextfieldsHost[]; extern const char kChromeUIThemePath[]; extern const char kChromeUIThumbnailPath[]; #if defined(OS_CHROMEOS) +extern const char kChromeUIActivationMessageHost[]; extern const char kChromeUIFileBrowseHost[]; extern const char kChromeUIImageBurnerHost[]; extern const char kChromeUIKeyboardOverlayHost[]; @@ -159,6 +166,9 @@ extern const char kCloudPrintSetupHost[]; extern const char kNetworkViewCacheURL[]; extern const char kNetworkViewInternalsURL[]; +// Sync related URLs. +extern const char kSyncViewInternalsURL[]; + // GPU related URLs extern const char kGpuInternalsURL[]; @@ -168,6 +178,7 @@ extern const char kAutoFillSubPage[]; extern const char kBrowserOptionsSubPage[]; extern const char kClearBrowserDataSubPage[]; extern const char kContentSettingsSubPage[]; +extern const char kContentSettingsExceptionsSubPage[]; extern const char kDefaultOptionsSubPage[]; extern const char kImportDataSubPage[]; extern const char kPersonalOptionsSubPage[]; @@ -188,6 +199,9 @@ extern const char kPageInfoHelpCenterURL[]; // "Learn more" URL for "Aw snap" page. extern const char kCrashReasonURL[]; +// "Learn more" URL for killed tab page. +extern const char kKillReasonURL[]; + // "Learn more" URL for the Privacy section under Options. extern const char kPrivacyLearnMoreURL[]; @@ -198,6 +212,9 @@ extern const char kChromiumProjectURL[]; // first run dialog. extern const char kLearnMoreReportingURL[]; +// The URL for the "Learn more" page for the blocked/outdated plugin infobar. +extern const char kOutdatedPluginLearnMoreURL[]; + // Call near the beginning of startup to register Chrome's internal URLs that // should be parsed as "standard" with the googleurl library. void RegisterChromeSchemes(); diff --git a/chrome/common/utility_messages_internal.h b/chrome/common/utility_messages_internal.h index 5381155..11e07f2 100644 --- a/chrome/common/utility_messages_internal.h +++ b/chrome/common/utility_messages_internal.h @@ -6,13 +6,13 @@ #include <vector> #include "base/platform_file.h" -#include "gfx/rect.h" #include "ipc/ipc_message_macros.h" #include "printing/backend/print_backend.h" #include "printing/page_range.h" #include "third_party/skia/include/core/SkBitmap.h" +#include "ui/gfx/rect.h" -#define IPC_MESSAGE_START NaClMsgStart +#define IPC_MESSAGE_START UtilityMsgStart class FilePath; class IndexedDBKey; diff --git a/chrome/common/web_apps.cc b/chrome/common/web_apps.cc index b9c390c..47682fa 100644 --- a/chrome/common/web_apps.cc +++ b/chrome/common/web_apps.cc @@ -7,8 +7,6 @@ #include <string> #include <vector> -#include "app/l10n_util.h" -#include "app/resource_bundle.h" #include "base/json/json_reader.h" #include "base/string16.h" #include "base/string_number_conversions.h" @@ -16,17 +14,19 @@ #include "base/utf_string_conversions.h" #include "base/values.h" #include "chrome/common/json_schema_validator.h" -#include "gfx/size.h" #include "googleurl/src/gurl.h" #include "grit/common_resources.h" #include "grit/generated_resources.h" -#include "third_party/WebKit/WebKit/chromium/public/WebDocument.h" -#include "third_party/WebKit/WebKit/chromium/public/WebElement.h" -#include "third_party/WebKit/WebKit/chromium/public/WebFrame.h" -#include "third_party/WebKit/WebKit/chromium/public/WebNode.h" -#include "third_party/WebKit/WebKit/chromium/public/WebNodeList.h" -#include "third_party/WebKit/WebKit/chromium/public/WebString.h" -#include "third_party/WebKit/WebKit/chromium/public/WebURL.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebDocument.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebElement.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebFrame.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebNode.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebNodeList.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebURL.h" +#include "ui/base/l10n/l10n_util.h" +#include "ui/base/resource/resource_bundle.h" +#include "ui/gfx/size.h" #include "webkit/glue/dom_operations.h" using WebKit::WebDocument; diff --git a/chrome/common/web_apps.h b/chrome/common/web_apps.h index 91f2023..7e7c9cb 100644 --- a/chrome/common/web_apps.h +++ b/chrome/common/web_apps.h @@ -11,8 +11,8 @@ #include "base/string16.h" #include "googleurl/src/gurl.h" -#include "gfx/size.h" #include "third_party/skia/include/core/SkBitmap.h" +#include "ui/gfx/size.h" namespace WebKit { class WebDocument; diff --git a/chrome/common/web_database_observer_impl.cc b/chrome/common/web_database_observer_impl.cc index b683b72..bc027d0 100644 --- a/chrome/common/web_database_observer_impl.cc +++ b/chrome/common/web_database_observer_impl.cc @@ -8,8 +8,8 @@ #include "base/message_loop.h" #include "base/string16.h" #include "chrome/common/database_messages.h" -#include "third_party/WebKit/WebKit/chromium/public/WebDatabase.h" -#include "third_party/WebKit/WebKit/chromium/public/WebString.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebDatabase.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h" WebDatabaseObserverImpl::WebDatabaseObserverImpl( IPC::Message::Sender* sender) diff --git a/chrome/common/web_database_observer_impl.h b/chrome/common/web_database_observer_impl.h index 84101c8..bb47472 100644 --- a/chrome/common/web_database_observer_impl.h +++ b/chrome/common/web_database_observer_impl.h @@ -7,7 +7,7 @@ #pragma once #include "ipc/ipc_message.h" -#include "third_party/WebKit/WebKit/chromium/public/WebDatabaseObserver.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebDatabaseObserver.h" #include "webkit/database/database_connections.h" class WebDatabaseObserverImpl : public WebKit::WebDatabaseObserver { diff --git a/chrome/common/webblobregistry_impl.cc b/chrome/common/webblobregistry_impl.cc index 3ab2fa4..cd74d50 100644 --- a/chrome/common/webblobregistry_impl.cc +++ b/chrome/common/webblobregistry_impl.cc @@ -6,9 +6,9 @@ #include "base/ref_counted.h" #include "chrome/common/render_messages.h" -#include "third_party/WebKit/WebKit/chromium/public/WebBlobData.h" -#include "third_party/WebKit/WebKit/chromium/public/WebString.h" -#include "third_party/WebKit/WebKit/chromium/public/WebURL.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebBlobData.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebURL.h" #include "webkit/blob/blob_data.h" using WebKit::WebBlobData; diff --git a/chrome/common/webblobregistry_impl.h b/chrome/common/webblobregistry_impl.h index 79bd06c..73395d9 100644 --- a/chrome/common/webblobregistry_impl.h +++ b/chrome/common/webblobregistry_impl.h @@ -7,7 +7,7 @@ #pragma once #include "ipc/ipc_message.h" -#include "third_party/WebKit/WebKit/chromium/public/WebBlobRegistry.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebBlobRegistry.h" namespace WebKit { class WebBlobData; diff --git a/chrome/common/webkit_param_traits.cc b/chrome/common/webkit_param_traits.cc index 909d7fd..12c885a 100644 --- a/chrome/common/webkit_param_traits.cc +++ b/chrome/common/webkit_param_traits.cc @@ -5,10 +5,10 @@ #include "chrome/common/webkit_param_traits.h" #include "base/format_macros.h" -#include "third_party/WebKit/WebKit/chromium/public/WebCompositionUnderline.h" -#include "third_party/WebKit/WebKit/chromium/public/WebFindOptions.h" -#include "third_party/WebKit/WebKit/chromium/public/WebMediaPlayerAction.h" -#include "third_party/WebKit/WebKit/chromium/public/WebScreenInfo.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebCompositionUnderline.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebFindOptions.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebMediaPlayerAction.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebScreenInfo.h" namespace IPC { diff --git a/chrome/common/webkit_param_traits.h b/chrome/common/webkit_param_traits.h index 6014f25..8d540c9 100644 --- a/chrome/common/webkit_param_traits.h +++ b/chrome/common/webkit_param_traits.h @@ -25,15 +25,15 @@ #pragma once #include "ipc/ipc_message_utils.h" -#include "third_party/WebKit/WebKit/chromium/public/WebCache.h" -#include "third_party/WebKit/WebKit/chromium/public/WebConsoleMessage.h" -#include "third_party/WebKit/WebKit/chromium/public/WebContextMenuData.h" -#include "third_party/WebKit/WebKit/chromium/public/WebDragOperation.h" -#include "third_party/WebKit/WebKit/chromium/public/WebFileError.h" -#include "third_party/WebKit/WebKit/chromium/public/WebInputEvent.h" -#include "third_party/WebKit/WebKit/chromium/public/WebPopupType.h" -#include "third_party/WebKit/WebKit/chromium/public/WebTextDirection.h" -#include "third_party/WebKit/WebKit/chromium/public/WebTextInputType.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebCache.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebConsoleMessage.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebContextMenuData.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebDragOperation.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebFileError.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebInputEvent.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebPopupType.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebTextDirection.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebTextInputType.h" namespace WebKit { struct WebCompositionUnderline; diff --git a/chrome/common/webmessageportchannel_impl.cc b/chrome/common/webmessageportchannel_impl.cc index 0778871..5326983 100644 --- a/chrome/common/webmessageportchannel_impl.cc +++ b/chrome/common/webmessageportchannel_impl.cc @@ -7,8 +7,8 @@ #include "chrome/common/child_process.h" #include "chrome/common/child_thread.h" #include "chrome/common/worker_messages.h" -#include "third_party/WebKit/WebKit/chromium/public/WebString.h" -#include "third_party/WebKit/WebKit/chromium/public/WebMessagePortChannelClient.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebMessagePortChannelClient.h" using WebKit::WebMessagePortChannel; using WebKit::WebMessagePortChannelArray; @@ -53,7 +53,7 @@ WebMessagePortChannelImpl::~WebMessagePortChannelImpl() { void WebMessagePortChannelImpl::setClient(WebMessagePortChannelClient* client) { // Must lock here since client_ is called on the main thread. - AutoLock auto_lock(lock_); + base::AutoLock auto_lock(lock_); client_ = client; } @@ -105,7 +105,7 @@ void WebMessagePortChannelImpl::postMessage( bool WebMessagePortChannelImpl::tryGetMessage( WebString* message, WebMessagePortChannelArray& channels) { - AutoLock auto_lock(lock_); + base::AutoLock auto_lock(lock_); if (message_queue_.empty()) return false; @@ -194,7 +194,7 @@ void WebMessagePortChannelImpl::OnMessage( const string16& message, const std::vector<int>& sent_message_port_ids, const std::vector<int>& new_routing_ids) { - AutoLock auto_lock(lock_); + base::AutoLock auto_lock(lock_); Message msg; msg.message = message; if (!sent_message_port_ids.empty()) { @@ -215,7 +215,7 @@ void WebMessagePortChannelImpl::OnMessagedQueued() { std::vector<QueuedMessage> queued_messages; { - AutoLock auto_lock(lock_); + base::AutoLock auto_lock(lock_); queued_messages.reserve(message_queue_.size()); while (!message_queue_.empty()) { string16 message = message_queue_.front().message; diff --git a/chrome/common/webmessageportchannel_impl.h b/chrome/common/webmessageportchannel_impl.h index 0199ebb..846a546 100644 --- a/chrome/common/webmessageportchannel_impl.h +++ b/chrome/common/webmessageportchannel_impl.h @@ -10,11 +10,11 @@ #include <vector> #include "base/basictypes.h" -#include "base/lock.h" #include "base/string16.h" #include "base/ref_counted.h" +#include "base/synchronization/lock.h" #include "ipc/ipc_channel.h" -#include "third_party/WebKit/WebKit/chromium/public/WebMessagePortChannel.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebMessagePortChannel.h" // This is thread safe. class WebMessagePortChannelImpl @@ -67,7 +67,7 @@ class WebMessagePortChannelImpl MessageQueue message_queue_; WebKit::WebMessagePortChannelClient* client_; - Lock lock_; // Locks access to above. + base::Lock lock_; // Locks access to above. int route_id_; // The routing id for this object. int message_port_id_; // A globally unique identifier for this message port. diff --git a/chrome/common/window_container_type.cc b/chrome/common/window_container_type.cc index b33618e..519fea3 100644 --- a/chrome/common/window_container_type.cc +++ b/chrome/common/window_container_type.cc @@ -5,9 +5,9 @@ #include "chrome/common/window_container_type.h" #include "base/string_util.h" -#include "third_party/WebKit/WebKit/chromium/public/WebString.h" -#include "third_party/WebKit/WebKit/chromium/public/WebVector.h" -#include "third_party/WebKit/WebKit/chromium/public/WebWindowFeatures.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebString.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebVector.h" +#include "third_party/WebKit/Source/WebKit/chromium/public/WebWindowFeatures.h" namespace { diff --git a/chrome/common/worker_thread_ticker.cc b/chrome/common/worker_thread_ticker.cc index 909cc8d..abbda88 100644 --- a/chrome/common/worker_thread_ticker.cc +++ b/chrome/common/worker_thread_ticker.cc @@ -44,7 +44,7 @@ WorkerThreadTicker::~WorkerThreadTicker() { bool WorkerThreadTicker::RegisterTickHandler(Callback *tick_handler) { DCHECK(tick_handler); - AutoLock lock(lock_); + base::AutoLock lock(lock_); // You cannot change the list of handlers when the timer is running. // You need to call Stop first. if (IsRunning()) @@ -55,7 +55,7 @@ bool WorkerThreadTicker::RegisterTickHandler(Callback *tick_handler) { bool WorkerThreadTicker::UnregisterTickHandler(Callback *tick_handler) { DCHECK(tick_handler); - AutoLock lock(lock_); + base::AutoLock lock(lock_); // You cannot change the list of handlers when the timer is running. // You need to call Stop first. if (IsRunning()) { @@ -74,7 +74,7 @@ bool WorkerThreadTicker::UnregisterTickHandler(Callback *tick_handler) { bool WorkerThreadTicker::Start() { // Do this in a lock because we don't want 2 threads to // call Start at the same time - AutoLock lock(lock_); + base::AutoLock lock(lock_); if (IsRunning()) return false; if (!timer_thread_.Start()) @@ -87,7 +87,7 @@ bool WorkerThreadTicker::Start() { bool WorkerThreadTicker::Stop() { // Do this in a lock because we don't want 2 threads to // call Stop at the same time - AutoLock lock(lock_); + base::AutoLock lock(lock_); if (!IsRunning()) return false; is_running_ = false; diff --git a/chrome/common/worker_thread_ticker.h b/chrome/common/worker_thread_ticker.h index d18feec..07f85eb 100644 --- a/chrome/common/worker_thread_ticker.h +++ b/chrome/common/worker_thread_ticker.h @@ -8,7 +8,7 @@ #include <vector> -#include "base/lock.h" +#include "base/synchronization/lock.h" #include "base/threading/thread.h" // This class provides the following functionality: @@ -74,7 +74,7 @@ class WorkerThreadTicker { typedef std::vector<Callback*> TickHandlerListType; // Lock to protect is_running_ and tick_handler_list_ - Lock lock_; + base::Lock lock_; base::Thread timer_thread_; bool is_running_; diff --git a/chrome/common/zip.cc b/chrome/common/zip.cc index 3e24b53..d5ff5d0 100644 --- a/chrome/common/zip.cc +++ b/chrome/common/zip.cc @@ -206,7 +206,7 @@ static bool AddFileToZip(zipFile zip_file, const FilePath& src_dir) { int flags = base::PLATFORM_FILE_OPEN | base::PLATFORM_FILE_READ; if (stream.Open(src_dir, flags) != 0) { LOG(ERROR) << "Could not open stream for path " - << WideToASCII(src_dir.ToWStringHack()); + << src_dir.value(); return false; } @@ -217,7 +217,7 @@ static bool AddFileToZip(zipFile zip_file, const FilePath& src_dir) { if (num_bytes > 0) { if (ZIP_OK != zipWriteInFileInZip(zip_file, buf, num_bytes)) { LOG(ERROR) << "Could not write data to zip for path " - << WideToASCII(src_dir.ToWStringHack()); + << src_dir.value(); return false; } } @@ -296,7 +296,7 @@ bool Zip(const FilePath& src_dir, const FilePath& dest_file, file_util::FileEnumerator::DIRECTORIES)); for (FilePath path = file_enumerator.Next(); !path.value().empty(); path = file_enumerator.Next()) { - if (!include_hidden_files && path.BaseName().ToWStringHack()[0] == L'.') + if (!include_hidden_files && path.BaseName().value()[0] == '.') continue; if (!AddEntryToZip(zip_file, path, src_dir)) { |