mirror of
https://github.com/roytam1/palemoon27.git
synced 2026-05-26 14:18:48 +00:00
8f529f64f5
- Bug 932865 - Add ThreadHangStats for collecting background hang telemetry; r=vladan (2f08a076b)
- Bug 932865 - Add way for telemetry to iterate over active threads; r=froydnj (535615d3d)
- Bug 1128768: Part 3 - Update BHR to allow for hang annotations; r=vladan (0b880a667)
- Bug 935092 - Add ThreadStackHelper to get a thread's pesudo-stack; r=BenWa (1422cfe4d)
- Bug 942488 - Don't report pseudo-stacks without SPS profiler. r=nchen (e160a7a08)
- Bug 946817 - Don't assert mPseudoStack on B2G. r=BenWa (9f846df3b)
- Bug 951431 - Don't get stacks during profiler runs on Linux; r=BenWa (15036e907)
- Bug 978262 - Ignore duplicate frames when getting BHR stack. r=froydnj (964721b1b)
- Bug 985155 - Add signal trampoline on ARM Linux to work around kernel bug. r=snorp (cb8a7846c)
- Bug 995730 - Convert xpcom/threads/ to Gecko style. r=froydnj (fe150404e)
- Bug 1013326 - Distinguish chrome and content scripts in pseudostack; r=snorp (81273c977)
- Bug 1023461 - Remove temporary stack buffer in ThreadStackHelper; r=snorp (cf5a717c2)
- Bug 1023461 - Record filename and line number for chrome JS entries; r=snorp (10c89808f)
- Bug 1022456 - Fix modelines in xpcom/{base,glue,io,string,threads}/. (48dbc0416)
- Bug 1016441 - Switch to using real-time signal in ThreadStackHelper; (2c5f818be)
- Bug 1016629 - b. Use RAII class to assign mStackToFill; r=snorp (769eae130)
- Bug 1016629 - c. Add define for ThreadStackHelper pseudostack support; r=snorp (67def0d2f)
- Bug 1016629 - d. Add and implement GetNativeStack method in ThreadStackHelper; r=snorp r=jseward (46c52f2be)
- Bug 1016629 - e. Implement platform-specific code for filling in context; r=snorp r=jseward (e6a66858b)
- Bug 1016629 - g. Avoid ASan flag when copying stack; r=snorp (0159628b5)
- Bug 1045176 - Unbreak build on non-SPS platforms after bug 1016629. (f1d60d838)
- Bug 1047123 - ThreadStackHelper should use UniquePtr<uint8_t[]>, not ScopedDeleteArray. r=jchen (0e4af313c)
- Bug 1049161 - Fix ThreadStackHelper thread handle permissions on Windows; r=snorp (c05172b1c)
- Bug 1050185 - Make ThreadStackHelper::FillThreadContext Valgrind-friendly. r=nchen (368725774)
- Bug 1050440 - Remove repeated js::RunScript frames in ThreadStackHelper (2a79600b3)
- Bug 1046841 - Fix more style violations in previously touched .cpp files in xpcom/. r=froydnj (02afe2493)
- Bug 1069694 - Remove or move around functions in OldDebugAPI. r=shu (177197302)
- Bug 1069694 - Remove OldDebugAPI from the browser. r=shu (b8c917d42)
- Bug 1100911 - For MacOS builds running on Valgrind, make ThreadStackHelper::GetStack be a no-op. r=nchen. (d99c02e16)
- Bug 1091758 - Report full paths for most chrome scripts; r=snorp (2b72e7878)
- Bug 1109291 - Include better paths for hanging chrome scripts in profile extensions directory; r=snorp r=bsmedberg (1997b9532)
- Bug 1113416 - Don't read stack labels inside hang monitor sighandler; r=nfroyd r=snorp (9688f6069)
- bug 1146027 - more final r=froydnj (7b0f295e5)
- Bug 1164090 - Check for Windows path separator in BHR file name; r=snorp (f014b4d78)
- Bug 1169034 - include <cstdlib> in ThreadStackHelper.cpp to declare correct overload for std::abs; r=jseward (874d4447e)
- Bug 1182996 - Fix and add missing namespace comments. rs=ehsan (054fc00b2)
- Bug 932865 - Collect thread hang stats in BackgroundHangMonitor; (ac80c8e9f)
- minor anticipated fixes to get it compiling (2bd701d15)
138 lines
4.4 KiB
Objective-C
138 lines
4.4 KiB
Objective-C
// vim:set ts=2 sts=2 sw=2 et cin:
|
|
// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved.
|
|
//
|
|
// Redistribution and use in source and binary forms, with or without
|
|
// modification, are permitted provided that the following conditions are
|
|
// met:
|
|
//
|
|
// * Redistributions of source code must retain the above copyright
|
|
// notice, this list of conditions and the following disclaimer.
|
|
// * Redistributions in binary form must reproduce the above
|
|
// copyright notice, this list of conditions and the following disclaimer
|
|
// in the documentation and/or other materials provided with the
|
|
// distribution.
|
|
// * Neither the name of Google Inc. nor the names of its
|
|
// contributors may be used to endorse or promote products derived from
|
|
// this software without specific prior written permission.
|
|
//
|
|
// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
|
// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
|
// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
|
// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
|
// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
|
// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
|
// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
|
// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
|
// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
|
|
#ifndef DOM_PLUGINS_IPC_PLUGININTERPOSEOSX_H
|
|
#define DOM_PLUGINS_IPC_PLUGININTERPOSEOSX_H
|
|
|
|
#include "base/basictypes.h"
|
|
#include "nsPoint.h"
|
|
#include "npapi.h"
|
|
|
|
// Make this includable from non-Objective-C code.
|
|
#ifndef __OBJC__
|
|
class NSCursor;
|
|
#else
|
|
#import <Cocoa/Cocoa.h>
|
|
#endif
|
|
|
|
// The header file QuickdrawAPI.h is missing on OS X 10.7 and up (though the
|
|
// QuickDraw APIs defined in it are still present) -- so we need to supply the
|
|
// relevant parts of its contents here. It's likely that Apple will eventually
|
|
// remove the APIs themselves (probably in OS X 10.8), so we need to make them
|
|
// weak imports, and test for their presence before using them.
|
|
#if !defined(__QUICKDRAWAPI__)
|
|
|
|
typedef short Bits16[16];
|
|
struct Cursor {
|
|
Bits16 data;
|
|
Bits16 mask;
|
|
Point hotSpot;
|
|
};
|
|
typedef struct Cursor Cursor;
|
|
|
|
#endif /* __QUICKDRAWAPI__ */
|
|
|
|
namespace mac_plugin_interposing {
|
|
|
|
// Class used to serialize NSCursor objects over IPC between processes.
|
|
class NSCursorInfo {
|
|
public:
|
|
enum Type {
|
|
TypeCustom,
|
|
TypeArrow,
|
|
TypeClosedHand,
|
|
TypeContextualMenu, // Only supported on OS X 10.6 and up
|
|
TypeCrosshair,
|
|
TypeDisappearingItem,
|
|
TypeDragCopy, // Only supported on OS X 10.6 and up
|
|
TypeDragLink, // Only supported on OS X 10.6 and up
|
|
TypeIBeam,
|
|
TypeNotAllowed, // Only supported on OS X 10.6 and up
|
|
TypeOpenHand,
|
|
TypePointingHand,
|
|
TypeResizeDown,
|
|
TypeResizeLeft,
|
|
TypeResizeLeftRight,
|
|
TypeResizeRight,
|
|
TypeResizeUp,
|
|
TypeResizeUpDown,
|
|
TypeTransparent // Special type
|
|
};
|
|
|
|
NSCursorInfo();
|
|
explicit NSCursorInfo(NSCursor* aCursor);
|
|
explicit NSCursorInfo(const Cursor* aCursor);
|
|
~NSCursorInfo();
|
|
|
|
NSCursor* GetNSCursor() const;
|
|
Type GetType() const;
|
|
const char* GetTypeName() const;
|
|
nsPoint GetHotSpot() const;
|
|
uint8_t* GetCustomImageData() const;
|
|
uint32_t GetCustomImageDataLength() const;
|
|
|
|
void SetType(Type aType);
|
|
void SetHotSpot(nsPoint aHotSpot);
|
|
void SetCustomImageData(uint8_t* aData, uint32_t aDataLength);
|
|
|
|
static bool GetNativeCursorsSupported();
|
|
|
|
private:
|
|
NSCursor* GetTransparentCursor() const;
|
|
|
|
Type mType;
|
|
// The hot spot's coordinate system is the cursor's coordinate system, and
|
|
// has an upper-left origin (in both Cocoa and pre-Cocoa systems).
|
|
nsPoint mHotSpot;
|
|
uint8_t* mCustomImageData;
|
|
uint32_t mCustomImageDataLength;
|
|
static int32_t mNativeCursorsSupported;
|
|
};
|
|
|
|
namespace parent {
|
|
|
|
void OnPluginShowWindow(uint32_t window_id, CGRect window_bounds, bool modal);
|
|
void OnPluginHideWindow(uint32_t window_id, pid_t aPluginPid);
|
|
void OnSetCursor(const NSCursorInfo& cursorInfo);
|
|
void OnShowCursor(bool show);
|
|
void OnPushCursor(const NSCursorInfo& cursorInfo);
|
|
void OnPopCursor();
|
|
|
|
} // namespace parent
|
|
|
|
namespace child {
|
|
|
|
void SetUpCocoaInterposing();
|
|
|
|
} // namespace child
|
|
|
|
} // namespace mac_plugin_interposing
|
|
|
|
#endif /* DOM_PLUGINS_IPC_PLUGININTERPOSEOSX_H */
|