--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/phonebookui/Phonebook2/inc/Pbk2Profile.h Tue Feb 02 10:12:17 2010 +0200
@@ -0,0 +1,349 @@
+/*
+* Copyright (c) 2005-2007 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description: Phonebook 2 profiling support.
+*
+*/
+
+
+#ifndef PBK2PROFILE_H
+#define PBK2PROFILE_H
+
+#include <e32def.h>
+#include <e32std.h>
+#include "Pbk2Config.hrh"
+
+/**
+ * Phonebook 2 profiling implementation.
+ *
+ */
+#ifdef PBK2_ENABLE_PROFILE
+
+ /* profiling implementation */
+ #define PBK2_PROFILE_START(aBin) \
+ Pbk2Profile::TPbk2Profiling::GlobalL()->StartProfile(aBin);
+
+ #define PBK2_PROFILE_END(aBin) \
+ Pbk2Profile::TPbk2Profiling::GlobalL()->EndProfile(aBin);
+
+ /// Needs PBK2_ENABLE_DEBUG_LOGGER
+ #define PBK2_PROFILE_DISPLAY(aBin)
+ #define PBK2_PROFILE_RESET(aBin)
+ #define PBK2_PROFILE_DELETE() \
+ delete Pbk2Profile::TPbk2Profiling::GlobalL()
+
+#else // PBK2_ENABLE_PROFILE
+
+ /* Profiling not enabled - empty implementation */
+ #define PBK2_PROFILE_START(aBin)
+ #define PBK2_PROFILE_END(aBin)
+ #define PBK2_PROFILE_DISPLAY(aBin)
+ #define PBK2_PROFILE_RESET(aBin)
+ #define PBK2_PROFILE_DELETE()
+
+#endif // PBK2_ENABLE_PROFILE
+
+
+namespace Pbk2Profile {
+
+ // CONSTANTS
+ enum TPbk2ProfileBin
+ {
+ /////////////////////////////////////////////////////////////////////
+ // Measures full startup.
+ /////////////////////////////////////////////////////////////////////
+ /**
+ * NewApplication() (CPbk2Application.cpp)
+ * -->
+ * CPbk2NamesListAppView::HandleNamesListControlEventL
+ * (TPbk2NamesListControlEvent::EReady)
+ */
+ EFullStartup = 1,
+
+ /////////////////////////////////////////////////////////////////////
+ // Following bins are in sequential order and there is no overlapping
+ /////////////////////////////////////////////////////////////////////
+ EAppUiConstruction = 2, // CPbk2AppUi::ConstructL
+ EAppUiBaseConstruct = 3, // call to AppUI::BaseContructL
+ EAppUiResouceFileLoading = 4, // call to load needed resource files
+ EAppUiCreateGlobals = 5, // Call to create application globals
+ EAppUiCreateViews = 6, // call to view explorer to create view
+
+ /////////////////////////////////////////////////////////////////////
+ // EAppUiConstruction split in several parts
+ /////////////////////////////////////////////////////////////////////
+ EAppUiCreateViewExplorer = 7, // 45000
+ EAppUiCreateStoreManager = 8,
+ EAppUiCreateAppUiExtension = 9,
+ EAppUiCreateStartupMonitor = 10,
+ EAppUiOpenStores = 11,
+ EViewExplorerCreateAppViewFactory = 12,
+ EViewExplorerCreateAppView = 13,
+ EViewExplorerAddView = 14,
+
+ /////////////////////////////////////////////////////////////////////
+ // Names list view split in several parts
+ /////////////////////////////////////////////////////////////////////
+ /**
+ * CPbk2NamesListAppView::ConstructL's BaseConstructL call.
+ */
+ ENamesListViewBaseConstruct = 15,
+
+ /**
+ * CPbk2NamesListAppView::CreateControlsL.
+ */
+ ENamesListViewCreateControls = 16,
+
+ /**
+ * CPbk2NamesListAppView::DoActivateL.
+ */
+ ENamesListViewDoActivateL = 17,
+
+ /////////////////////////////////////////////////////////////////////
+ // Contact info view split in several parts
+ /////////////////////////////////////////////////////////////////////
+ /**
+ * CPbk2ContactInfoAppView::ConstructL's BaseConstructL call.
+ */
+ EContactInfoViewBaseConstruct = 18,
+
+ /////////////////////////////////////////////////////////////////////
+ // AIW
+ /////////////////////////////////////////////////////////////////////
+ /**
+ * CPbk2AiwInterestItemBase::AttachL's menu attach.
+ */
+ EAiwMenuAttach = 19,
+
+ /**
+ * CPbk2AiwInterestItemBase::AttachL's base service attach.
+ */
+ EAiwBaseServiceAttach = 20,
+
+ /////////////////////////////////////////////////////////////////////
+ // App view factory create view split in several parts
+ /////////////////////////////////////////////////////////////////////
+
+ EAppViewFactoryCreateAppViewL = 21,
+ EAppViewFactoryNamesListAppViewNewL = 23, // costly
+ EAppViewFactoryContactInfoAppViewNewL = 24,
+ EAppViewFactorySettingsAppViewNewL = 25,
+
+ /////////////////////////////////////////////////////////////////////
+ // Names list app view construction split in several parts
+ /////////////////////////////////////////////////////////////////////
+ ENamesListAppViewConstruction = 26,
+ ENamesListGetCommandHandler = 27, // 5000
+ ENamesListAIWRegisterInterestCall = 28, // 53125
+ ENamesListAIWRegisterInterestPOC = 29, // 100000
+ ENamesListAIWRegisterInterestSyncML = 30, // 55000
+ ENamesListRegisterStoreConfiguration = 31,
+ ENamesListPenSupportConstruction = 32,
+
+ /////////////////////////////////////////////////////////////////////
+ // Names list create control split in several parts
+ /////////////////////////////////////////////////////////////////////
+ ENamesListViewCreateContainer = 33, // 5000
+ ENamesListViewSetHelpContext = 34, // 0
+ ENamesListViewGetContactManager = 35, // 0
+ ENamesListViewCreateNamesListControl = 36, // 87500
+ ENamesListViewSetControl = 37, // 0
+ ENamesListViewAddToStack = 38, // 0
+
+ /////////////////////////////////////////////////////////////////////
+ // Names list DoActivateL split in several parts
+ /////////////////////////////////////////////////////////////////////
+ ENamesListViewDoActivateAddMenuCommandObserver = 39, // 0
+ ENamesListViewDoActivateLoadTitle = 40, // 0
+ ENamesListViewDoActivateHandleViewActivation = 41, // 5000
+ ENamesListViewDoActivateParamHandling = 42, // 0
+ ENamesListViewDoActivateActivateControl = 43, // 15000
+ ENamesListViewDoActivateNotifyViewActivatation = 44, // 44000
+ ENamesListViewDoActivateToolbar = 45, // 0
+
+ /////////////////////////////////////////////////////////////////////
+ // Document Create globals
+ /////////////////////////////////////////////////////////////////////
+ EDocumentCreateExtensionManager = 47,
+
+ /////////////////////////////////////////////////////////////////////
+ // Shared objects construction split in several parts
+ /////////////////////////////////////////////////////////////////////
+ EAppServicesCreateStoreManager = 48, // 15000
+ EAppServicesCreateStorePropertyArray = 49, // 5000
+ EAppServicesCreateFieldPropertyArray = 50, // 5000
+ EAppServicesCreateStoreConfiguration = 51, // 0
+ EAppServicesCreateSortOrderManager = 52, // 5000
+
+ /////////////////////////////////////////////////////////////////////
+ // UI Extension manager creation split in several parts
+ /////////////////////////////////////////////////////////////////////
+ EUiExtensionManagerCreateExtensionLoader = 53, // 55000
+ EUiExtensionManagerCreateConfigurationObserver = 55, // 0
+ EUiExtensionManagerCreateThinExtensionLoader = 56, // 45000
+ EUiExtensionManagerCreateMenuManager = 57, // 0
+
+ /////////////////////////////////////////////////////////////////////
+ // UI Extension loader creation split in several parts
+ /////////////////////////////////////////////////////////////////////
+ EUiExtensionloaderLoadResourceFile = 58, // 5000
+ EUiExtensionloaderListImplementations = 59, // 0
+ EUiExtensionloaderLoopExtensionPlugins = 60, // 10000
+ EUiExtensionloaderLoadStartupExtensions = 61, // 45000
+
+ /////////////////////////////////////////////////////////////////////
+ // Thin UI Extension loader creation split in several parts
+ /////////////////////////////////////////////////////////////////////
+ EThinUiExtensionLoaderListImplementations = 62, // 0
+ EThinUiExtensionLoaderLoopImplementations = 63, // 45000
+
+ /////////////////////////////////////////////////////////////////////
+ // View explorer construction split in several parts
+ /////////////////////////////////////////////////////////////////////
+ EViewExplorerConstructionReadViewGraph = 64, // 0
+ EViewExplorerConstructionGetNaviPane = 65, // 0
+ EViewExplorerConstructionCreateTabGroup = 66, // 45000
+
+ /////////////////////////////////////////////////////////////////////
+ // Tab group construction split in several parts
+ /////////////////////////////////////////////////////////////////////
+ ETabGroupCreateTabGroups = 67, // 26000
+ ETabGroupSkinTabGroups = 68, // 15000
+
+ /////////////////////////////////////////////////////////////////////
+ // Sort policy's compare
+ /////////////////////////////////////////////////////////////////////
+ ESortPolicyCompareContacts = 69,
+ ESortPolicySortUtil = 70,
+
+ /////////////////////////////////////////////////////////////////////
+ // Contact info start up analysis split to several parts
+ /////////////////////////////////////////////////////////////////////
+ EContactInfoConstructL = 71, // 2000
+ EContactInfoStartTime = 72, // 106520, 95875 (view loading, doactivate to view ready)
+ EContactInfoDoActivateContactChanged = 73, // 112500, 108875 (from doactivate to contact changed call, spanning start time)
+ EContactInfoDoActivateL = 74, // 71000, 61750 (doactivate)
+ EContactInfoContactChangedL = 75, // 685500, 4784000
+ EContactInfoCreateControlsL = 76, // 52000, 43750
+ EContactInfoAttachAIWProvidersL = 77, // 0, 0
+ EContactInfoContactChangedLUpdateControls = 78, // 4732375
+ EContactInfoContactChangedLSetFocusedField = 79, // 0
+ EContactInfoContactChangedLRestoreControlState = 80, // 2000
+ EContactInfoContactChangedLCommitViewTransaction = 81, // 0
+ EContactInfoContactChangedLNotifyStartupMonitor = 82, // 0
+
+ /////////////////////////////////////////////////////////////////////
+ // Contact info control update split
+ /////////////////////////////////////////////////////////////////////
+ EContactInfoControlUpdateL = 83, //
+ EContactInfoControlUpdateLCreateStoreSpecificFieldProps = 84, // 0
+ EContactInfoControlUpdateLCreatePresentationContact = 85, // 1000
+ EContactInfoControlUpdateLCreateTitlePanePicture = 86, // 10000
+ EContactInfoControlUpdateLCreateSwapper = 87, // 0
+ EContactInfoControlUpdateLStorePanes = 88, // 1000
+ EContactInfoControlUpdateLCreateDynamicFieldProperties = 89, // 1000
+ EContactInfoControlUpdateLPrepareForUpdate = 90, // 4651250
+ EContactInfoControlUpdateLSetTitlePane = 91, // 4000
+ EContactInfoControlUpdateLUpdateListbox = 92, // 2000
+ EContactInfoControlUpdateLCleanupState = 93, // 0
+ EContactInfoControlUpdateLSetIndex = 94, // 0
+ EContactInfoControlUpdateLUpdateNavigators = 95, // 14000
+ EContactInfoControlUpdateLSendEvents = 96, // 11000
+
+ /////////////////////////////////////////////////////////////////////
+ // CPbk2ContactInfoListBox
+ /////////////////////////////////////////////////////////////////////
+ EContactInfoListBoxPrepareForUpdateLCreateListBoxModel = 97, // 4634625
+ EContactInfoListBoxPrepareForUpdateLStoreListBoxState = 98, // 0
+ EContactInfoListBoxCreateListBoxModelLTimeFormat = 99, // 1000
+ EContactInfoListBoxCreateListBoxModelLCreateListBoxModel = 100, // 1000
+ EContactInfoListBoxCreateListBoxModelLFormatFields = 101, // 4622625
+ EContactInfoListBoxCreateListBoxModelLSetClipper = 102, // 0
+
+ ////////////////////////////////////////////////////////////////////
+ // CPbk2FieldListBoxModel
+ ////////////////////////////////////////////////////////////////////
+ EContactInfoListBoxModelFormatFieldsLFieldAt = 103, // 0
+ EContactInfoListBoxModelFormatFieldsLFormatField = 104, // 587000
+ EContactInfoListBoxModelFormatFieldLShowField = 105, // 0
+ EContactInfoListBoxModelFormatFieldLCreateFieldListBoxRow = 106, // 0
+ EContactInfoListBoxModelFormatFieldLGetMasterFieldTypeList = 107, // 0
+ EContactInfoListBoxModelFormatFieldLMatchFieldType = 108, // 0
+ EContactInfoListBoxModelFormatFieldLAppendIcons = 109, // 0
+ EContactInfoListBoxModelFormatFieldLAppendFieldLabel = 110, // 0
+ EContactInfoListBoxModelFormatFieldLAppendFieldContent = 111, // 1000
+ EContactInfoListBoxModelFormatFieldLAppendEndIcons = 112, // 587000
+ EContactInfoListBoxModelFormatFieldLExpandBuffer = 113, // 0
+ EContactInfoListBoxModelFormatFieldLAppendRow = 114, // 0
+
+ /////////////////////////////////////////////////////////////////////
+ // End icons
+ /////////////////////////////////////////////////////////////////////
+ EContactInfoListBoxModelAppendEndIconSpeedDial = 115, // 13000
+ EContactInfoListBoxModelAppendEndIconSpeedDialIcon = 116, // 0
+ EContactInfoListBoxModelAppendEndIconVoiceTag = 117, // 421250
+ EContactInfoListBoxModelAppendEndIconVoiceTagIcon = 118, // 0
+
+ KEndProfileBins = 119
+ };
+
+
+/**
+ * Utility class for Phonebook 2 profiling.
+ */
+class TPbk2Profiling
+ {
+ public: // Interface
+
+ /**
+ * Returns the global shared object of this class.
+ * Creates the object if it does not exist.
+ *
+ * @return Instance of this class.
+ */
+ IMPORT_C static TPbk2Profiling* GlobalL();
+
+ /**
+ * Destructor.
+ */
+ IMPORT_C ~TPbk2Profiling();
+
+ /**
+ * Starts profiling.
+ *
+ * @param aBin Integer identifying the profile.
+ */
+ IMPORT_C void StartProfile(
+ TInt aBin );
+
+ /**
+ * Ends profiling.
+ *
+ * @param aBin Integer identifying the profile.
+ */
+ IMPORT_C void EndProfile(
+ TInt aBin ) const;
+
+ private: // Implementation
+ TPbk2Profiling();
+
+ private:
+ /// Own: Flat C array
+ TTime iProfileArray[KEndProfileBins];
+ };
+
+} // namespace Pbk2Profile
+
+#endif // PBK2PROFILE_H
+
+// End of File